-2

我在这里的 java 程序中有一个方法,它在简单的乘法上给出错误的结果,我不确定发生了什么。也许这是我需要扩展的eclipse中的一个设置——我只是不知道。

就这么简单:987,654,321 * 10。显然应该是 9,876,543,210。相反,我得到了 1,286,608,618。世界上有什么?该方法只是读取字符并将标记化的数字(不超过 10 位)添加到列表中。其他一切都很好,但出于某种原因它讨厌这个数字。

public void number(char dig, boolean lc){
    int num = Character.getNumericValue(dig);
    if(number == 0){
        number = num;
    }
    else{           
        number = number*10 + num;
    }
    if(lc){
        if(String.valueOf(number).trim().length() <= intLength){
            tokenList.add(number);
            number = 0;
            return;
        }
        else{
        System.out.println("Error in number entry. Invalid or exceeded length: " + number); 
            number = 0; 
            return;
            }   
    }
}
4

1 回答 1

8

您的值远远超出整数范围。以下声明:

System.out.println(9_876_543_210L);  // This is what you are claiming should have come
System.out.println(Integer.MAX_VALUE);

印刷:

9876543210
2147483647

因此,当您这样做时987654321 * 10,该值无法放入int中,因此它会溢出,并且您会得到该结果。

选择?使用long类型。


也可以看看:

于 2013-08-28T20:08:03.993 回答