簡體   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