比较java中的int值?
我在比较代码下面的比较java中的int值?,java,object,map,integer,int,Java,Object,Map,Integer,Int,我在比较代码下面的folderInfo.getFolderInfo记录().getInfoCode()和map.get(“infoCode”)时遇到了一个问题。两者都给出了value=2,但我的问题是它没有进入if条件内部 下面是一个例子: if (folderInfoData.getFolderInfoRecord().getInfoCode().equals(map.get("infoCode"))) { showNotification(pageResourceBundl
folderInfo.getFolderInfo记录().getInfoCode()
和map.get(“infoCode”)
时遇到了一个问题。两者都给出了value=2
,但我的问题是它没有进入if
条件内部
下面是一个例子:
if (folderInfoData.getFolderInfoRecord().getInfoCode().equals(map.get("infoCode"))) {
showNotification(pageResourceBundle.getText("MSG_SAME_INFO_ALREADY_EXISTS"));
return;
}
在我谷歌搜索之前,它对我无效:
有人能告诉我如何解决这个问题吗
谢谢您必须检查这两个实例是否都是具有正确值的整数实例,即是否通过了相等性测试。当两个整数值相同时,测试肯定会通过。请调试您的代码并找出答案。将其更改为==
是没有用的,您必须检查这两个实例是否都是具有正确值的整数实例,以便通过相等性测试。当两个整数值相同时,测试肯定会通过。请调试您的代码并找出答案。如果它返回字符串,则将其更改为==
是没有用的
if (Integer.parseInt(folderInfoData.getFolderInfoRecord().getInfoCode()) == Integer.parseInt(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;
}
如果它返回字符串
if (Integer.parseInt(folderInfoData.getFolderInfoRecord().getInfoCode()) == Integer.parseInt(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;
}
如果要使用
.equals()
,最好的方法是确保它总是返回整数,而不是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;
}
如果要使用.equals()
,最好的方法是确保它总是返回整数,而不是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;
}
似乎您正在将int与整数进行比较。Java会自动将整数转换成整数
所以
变成
int a = 2;
Integer b = new Integer(a);
System.out.println(a == b.valueOf());
所以,如果你想使用equals,请参阅Rafa El答案。否则您可以使用==
似乎您正在将int与整数进行比较。Java会自动将整数转换成整数
所以
变成
int a = 2;
Integer b = new Integer(a);
System.out.println(a == b.valueOf());
所以,如果你想使用equals,请参阅Rafa El答案。否则,您可以在声明映射已声明映射的注释中使用==。这可能就是问题所在
当您调用map.get(“infoCode”)
时,您将返回一个对象
如果:
- 该
对象
实际上是整数
folderInfoData.getFolderInfoRecord().getInfoCode()
正在返回一个整数
- 两个
Integer
s包含相同的值
那么这个,
if (folderInfoData.getFolderInfoRecord().getInfoCode()
.equals(map.get("infoCode"))) {
将计算为true
因此,要么它们是两个整数,但不包含相同的值,要么它们是不同类型的对象且不相等。(或者,“infoCode”在映射中不存在,它返回null
)在注释中,您声明映射已声明映射。这可能就是问题所在
当您调用map.get(“infoCode”)
时,您将返回一个对象
如果:
- 该
对象
实际上是整数
folderInfoData.getFolderInfoRecord().getInfoCode()
正在返回一个整数
- 两个
Integer
s包含相同的值
那么这个,
if (folderInfoData.getFolderInfoRecord().getInfoCode()
.equals(map.get("infoCode"))) {
将计算为true
因此,要么它们是两个整数,但不包含相同的值,要么它们是不同类型的对象且不相等。(或者,“infoCode”在映射中不存在,它返回null
)什么是getInfoCode()
@SitansuInteger
或int
的返回类型?事实证明,这可能会有所不同。folderinfo.getfolderinfo.record().getInfoCode()
返回的确切类型是什么,以及map
是如何声明的?这就是你的问题所在。getInfoCode()
@SitansuInteger
或int
的返回类型是什么?事实证明,这可能会有所不同。folderInfo.getFolderInfo.Record().getInfoCode()
返回的确切类型是什么,以及map
是如何声明的?map map这将是您的问题,就在那里。为什么.equals不起作用和==起作用?您应该解释这一点,因为.equals的默认实现执行引用(=)比较,所以更应该解释这一点。您是否打算说getInfoCode()返回的对象中.equals()重写的实现是错误的?如果它是编译的,则这是错误的。一个映射不能返回一个基元,所以除了导致一些不必要的取消装箱之外,它不会有任何区别。因为这些是int值,所以应该使用相等运算符。因为它们是双方传递的实际值。为什么我们不应该这样做?哦,我很抱歉。我确实想当然了,但回答错了。谢谢。为什么不呢。等于不工作,等于工作?您应该解释这一点,因为.equals的默认实现执行引用(=)比较,所以更应该解释这一点。您是否打算说getInfoCode()返回的对象中.equals()重写的实现是错误的?如果它是编译的,则这是错误的。一个映射不能返回一个基元,所以除了导致一些不必要的取消装箱之外,它不会有任何区别。因为这些是int值,所以应该使用相等运算符。因为它们是双方传递的实际值。为什么我们不应该这样做?哦,我很抱歉。我确实想当然了,但回答错了。感谢Integer类型中的方法parseInt(字符串)不适用于参数(对象)。Integer类型中的方法parseInt(字符串)不适用于参数(对象)Integer num2=新整数(map.get(“infoCode”);构造函数整数(对象)为undefined@Sitansu如果你得到的构造函数整数(Object)是未定义的,这意味着map。get(“infoCode”)
值已经是整数了type@DnR不,这意味着他的Map
被声明为Map
(参见注释)。对于接受对象的整数
没有构造函数(或parseInt())
,BrianRoach yes,