Java 如何比较整数和长整数?

Java 如何比较整数和长整数?,java,Java,我试图检查长整数是否大于integer.MAX值,但它不起作用。这是非常直接的,所以我只是想知道比较整数对象和long是否有问题,因为否则我不知道问题是什么。当nextTotal值超过INTEGER.MAX时,它将变为负数,而不是打印错误消息 public Integer initialValue=0; int amount = Integer.parseInt(amountStr); System.out.println("Received from client: " +

我试图检查长整数是否大于integer.MAX值,但它不起作用。这是非常直接的,所以我只是想知道比较整数对象和long是否有问题,因为否则我不知道问题是什么。当nextTotal值超过INTEGER.MAX时,它将变为负数,而不是打印错误消息

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;

换句话说,在添加之前检查金额是否会溢出,并抛出一个异常(或发送一条错误消息或任何适合您的应用程序的信息),而不是正常进行。

谢谢您的帮助—我觉得这很简单!