[英]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.