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