给出错误结果的Java

给出错误结果的Java,java,Java,我这里有一个java程序中的方法,它在一个简单的乘法中给出了错误的结果,我不确定发生了什么。也许这是eclipse中我需要扩展的一个设置--我只是不知道 就这么简单:987654321*10。显然应该是9876543210。相反,我得到了1286608618。到底是什么?该方法只需读取字符并将标记数字(不超过10位)添加到列表中。其他一切正常,但出于某种原因,它讨厌这个数字 public void number(char dig, boolean lc){ int num = Chara

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

就这么简单:987654321*10。显然应该是9876543210。相反,我得到了1286608618。到底是什么?该方法只需读取字符并将标记数字(不超过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;
            }   
    }
}
public void number(字符挖掘、布尔lc){
int num=Character.getNumericValue(dig);
如果(数字==0){
number=num;
}
否则{
数字=数字*10+num;
}
国际单项体育联合会{

如果(String.valueOf(number).trim().length()您的值远远超出整数范围。下面的语句:

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
类型


另请参见:


数字从何而来?此外,您应该避免将函数命名为“数字”,即2提升到31次方的“溢出”。这解决了它。我永远不会想到。我会在最短10分钟内接受您的答案。