获得异常错误

时间:2014-01-24 05:58:52

标签: java numberformatexception

好的,所以我正在研究一种应该结合一组二进制数的方法。由于某种原因,我得到了一个例外。当numberOfBits为4时,该方法有效,但当我向上移动到7时,它会出错。我不确定为什么它会这样做,到目前为止还没有修复它。有什么想法吗?错误在下面的代码中注明。任何帮助将不胜感激,谢谢。

Exception in thread "main" java.lang.NumberFormatException: For input string: "111001101100111"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:461)
at java.lang.Integer.valueOf(Integer.java:554)
at MP1.combine(MP1.java:96)
at MP1.shiftRight(MP1.java:76)
at MP1.main(MP1.java:131)

public Integer combine(Register register, int numberOfBits) {
    String C1 = Integer.toBinaryString(register.C);
    String A1 = Integer.toBinaryString(register.A);
    String Q1 = Integer.toBinaryString(register.Q);

    C1 = String.format("%1s", C1).replace(' ', '0');
    A1 = String.format("%" + numberOfBits + "s", A1).replace(' ', '0');
    Q1 = String.format("%" + numberOfBits + "s", Q1).replace(' ', '0');

    String comboS = C1 + A1 + Q1;

    //Says error is here (below)
    Integer comboI = Integer.valueOf(comboS); 

    return comboI;
}

2 个答案:

答案 0 :(得分:0)

在尝试获取valueOf之前打印出你的comboS字符串,你会看到你的奇怪号码。

我猜它不适合整数。

答案 1 :(得分:0)

整数的最大值为2147483647,显然111001101100111远大于Integer.MAX_VALUE

Integer.valueOf(comboS)最终致电Integer.parseInt(str)。这就是您收到NumberFormatException

的原因

如果你想用二进制而不是十进制来解析111001101100111Integer.parseInt(comboS, 2)可以使用。

或者使用BigInteger代替,没有上限。