比较java中的int值?

时间:2014-01-17 05:36:32

标签: java object map integer int

我在比较代码下方folderInfoData.getFolderInfoRecord().getInfoCode()map.get("infoCode")时遇到问题。请给value=2但我的问题是它不会进入if条件。

以下是示例:

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

在我用谷歌搜索它之前对我不起作用:Comparing Integer objects vs int

任何人都可以告诉mehow可以解决这个问题吗?

由于

5 个答案:

答案 0 :(得分:3)

在评论中,您声明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

答案 1 :(得分:2)

如果您想使用.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;
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果返回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;
    }

答案 4 :(得分:-1)

似乎您正在将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());

所以如果你想使用equals,请参阅Rafa El回答。否则你可以使用==

相关问题