110011000111100111001100011110011100110001111001110011000111100111001100011110011100110001111001
答案 0 :(得分:1)
这不是检查二进制数的有效方法。您将转换为基数为10的int
,然后检查基数10中的每个数字是零还是一。转换本身将在足够长的输入字符串上失败,如果不是,则检查也将失败。
你不应该全部转换它,你应该检查输入字符串本身。
编辑其实你不需要做任何事情。如果字符串不是指定基数中的数字,Integer.parseInt()
将为您检查并抛出NumberFormatException
。
答案 1 :(得分:0)
您首先将二进制数字字符串解析为十进制整数。如果它有超过10位有效数字,则其十进制解释太大而无法放入int
,因此十进制转换失败。
当您要将数字字符串解析为二进制数时,只需避免首先将其解析为十进制数字。例如,您发布的大部分内容都可以简化为:
int inputNumber = Integer.parseInt(returnEnterNumber(),
binaryToDecimal.isSelected() ? 2 : 10);
答案 2 :(得分:0)
看看Integers MAX值:
public class MainClass {
public static void main(String[] arg) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
}
}
输出将是:
2147483647
-2147483648
这意味着如果您的数字超过10位,则超出了Integer
数据类型的最大数量。
尝试对二进制值使用BigInteger
或考虑将其作为String
答案 3 :(得分:0)
以下是一行代码,可以实现您的目标
System.out.println(new BigInteger("10101010101010111101010101001101010101010101001010101010101001011101010101010101",2).toString());