繁体   English   中英

比较java中的int值?

[英]Comparing int value in java?

我在代码下面比较folderInfoData.getFolderInfoRecord().getInfoCode()map.get("infoCode")时遇到问题folderInfoData.getFolderInfoRecord().getInfoCode()都给定value=2但我的问题是, if条件不输入。

这是例子:

if (folderInfoData.getFolderInfoRecord().getInfoCode().equals(map.get("infoCode"))) {
         showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
          return;
    }

在我用谷歌搜索之前,它对我无效: 比较整数对象与整数

谁能告诉我如何解决这个问题?

谢谢

在注释中,您声明该map已声明为Map<String, Object> 那可能是问题所在。

当您调用map.get("infoCode")您将获得一个Object

如果:

  • Object实际上是Integer的实例
  • folderInfoData.getFolderInfoRecord().getInfoCode()返回一个Integer
  • 两个Integer都包含相同的值

然后这样:

if (folderInfoData.getFolderInfoRecord().getInfoCode()
        .equals(map.get("infoCode"))) {

将评估为true

因此,要么它们是两个Integers但不都包含相同的值,要么它们是不同类型的对象并且相等。 (或者,“ infoCode”在地图中不存在,并且返回null

如果要使用.equals() ,最好的方法是确保始终返回Integer而不是int

int num1 = Integer.parseInt(folderInfoData.getFolderInfoRecord().getInfoCode());
int num2 = Integer.parseInt(map.get("infoCode"));

if (new Integer(num1).equals(new Integer(num2))) {
     showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
      return;
}

您必须检查两个实例是否都是具有正确值的Integer实例,这样才能通过equals test 当两个Integer值相同时,测试肯定会通过。 请调试您的代码并找出答案。 将其更改为==没有用。

如果返回String

if (Integer.parseInt(folderInfoData.getFolderInfoRecord().getInfoCode()) == Integer.parseInt(map.get("infoCode"))) {
         showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
          return;
    }

其他

if (folderInfoData.getFolderInfoRecord().getInfoCode() == map.get("infoCode")) {
         showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
          return;
    }

试试这个也是

 if (folderInfoData.getFolderInfoRecord().getInfoCode().toString.trim().equals(map.get("infoCode").toString().trim())) {
         showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
          return;
    }

似乎您正在将int与Integer进行比较。 Java会自动将Integer转换为int

所以

int a = 2;
Integer b = a;
System.out.println(a == b);

变成

int a = 2;
Integer b = new Integer(a);
System.out.println(a == b.valueOf());

因此,如果您想使用等于,请参阅Rafa El答案。 否则您可以使用==

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM