Java 如何比较整数和长整数?
我试图检查长整数是否大于integer.MAX值,但它不起作用。这是非常直接的,所以我只是想知道比较整数对象和long是否有问题,因为否则我不知道问题是什么。当nextTotal值超过INTEGER.MAX时,它将变为负数,而不是打印错误消息Java 如何比较整数和长整数?,java,Java,我试图检查长整数是否大于integer.MAX值,但它不起作用。这是非常直接的,所以我只是想知道比较整数对象和long是否有问题,因为否则我不知道问题是什么。当nextTotal值超过INTEGER.MAX时,它将变为负数,而不是打印错误消息 public Integer initialValue=0; int amount = Integer.parseInt(amountStr); System.out.println("Received from client: " +
public Integer initialValue=0;
int amount = Integer.parseInt(amountStr);
System.out.println("Received from client: " + amount);
long nextTotal=amount+initialValue;
if((nextTotal>Integer.MAX_VALUE)|| (nextTotal<Integer.MIN_VALUE)){
System.out.println("Error: Integer has not been added as the total exceeds the Maximum Integer value!");
out.flush();
}
else{
initialValue+=amount;
out.println(initialValue); //server response
System.out.println("Sending total sum of integers to the client:"+initialValue);
out.flush();
}
}
public Integer initialValue=0;
int amount=Integer.parseInt(amountStr);
系统输出打印项次(“从客户处收到:+金额);
long nextTotal=金额+初始值;
如果((nextTotal>Integer.MAX_值)||(nextTotal问题是您添加了两个int
但它们尚未升级为long
,因此在转换为long
之前会溢出,当然int
永远不能大于整数。MAX\u值
。它只会在赋值时转换为long
,即在添加之后
在添加之前,使用强制转换将其转换为long
long nextTotal = (long) amount + initialValue;
由于您实际上不想使用long
值,我通常会这样做:
int amount = Integer.parseInt(amountStr);
if (amount > (Integer.MAX_VALUE - initialValue))
throw new IllegalArgumentException("Amount exceeds maximum value");
initialValue += amount;
换句话说,在添加之前检查金额是否会溢出,并抛出一个异常(或发送一条错误消息或任何适合您的应用程序的信息),而不是正常进行。谢谢您的帮助—我觉得这很简单!