我正在尝试编写一个将二进制数转换为十进制的程序,但是一旦我有一个大于 10 位的二进制数,我就会收到 java.lang.numberformatexception 错误。我想知道应该如何重写代码以处理二进制数:
try{
//will throw an exception if the user's input contains a non-Integer
int inputNumber = Integer.parseInt(returnEnterNumber());
//when our user wants to convert from binary to decimal
if(binaryToDecimal.isSelected()){
//checks if number is binary
int checkNumber = inputNumber;
while (checkNumber != 0) {
if (checkNumber % 10 > 1) {
throw new InvalidBinaryException();
}
checkNumber = checkNumber / 10;
}
//converts from binary and outputs result
int n = Integer.parseInt(returnEnterNumber(), 2);
displayConvertedNumber(Integer.toString(n));
}
}
catch(Exception e) {
displayConvertedNumber("WRONG INPUT! - TRY again");
}
编辑:我理解代码失败的原因,看看它如何将数字作为小数并溢出。我不知道如何重写代码以立即将输入作为二进制文件。
最佳答案
这不是检查二进制数的有效方法。您要转换为以 10 为基数的 int
,然后检查以 10 为基数的每个数字是零还是一。转换本身将在足够长的输入字符串上失败,如果没有,检查也会失败。
您不应该全部转换,您应该检查输入字符串本身。
编辑实际上你不需要做任何事情。 Integer.parseInt()
将为您检查它,如果字符串不是指定基数中的数字,则抛出 NumberFormatException
。
关于java - 在java中读取长二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29337712/