如何解决无法在Java中比较ArrayList值
我正在上一门Java课程,在一个练习中,我必须创建三个ArrayList,要求用户用Integers填充前两个,然后比较两个ArrayList。
不重复的值将添加到第三个ArrayList中。我已经声明了ArrayLists,使用Scanner允许用户填充ArrayLists,并且该部分有效。
当我尝试比较两个ArrayList时出现问题。我在这一行中收到各种警报(“ if语句是多余的”,“使用==或!=“比较的整数值,“二进制运算符的翻转操作数”,“如果...则反转” )。
我怀疑在if语句之后编写的内容不是很干净,并且我可能对此有所评论(我不是Java方面的专家),但是我不理解IDE显示的警报。代码会编译并运行良好,直到遇到嵌套循环。请帮忙!谢谢。
//Checking for values that dont repeat
for(int i=0;i<listVector1.size();i++){
for(int j=0;j<listVector2.size();i++){
if(listVector1.get(i)==listVector2.get(j)){//Im getting an alert here
repeats=true; //this boolean was previously declared
} else {
repeats=false;
}
if(repeats==false){
int newValue=listVector1.get(i);
listVector3.add(newValue);
}
}
}
解决方法
这是真正的问题。
使用==或!=
比较的整数值
==
运算符比较两个对象的引用。但是您实际要做的是比较存储在引用中的值。
因此,您需要使用equals
运算符。
或者您可以将其中一个值显式转换为int
并在类似的值上使用==
if(listVector1.get(i) == ((int)listVector2.get(j))){
repeats=true;
} else {
repeats=false;
}
要了解更多信息,请使用Google difference between == and equals operator
。
首先,您在第二个for循环中犯了一个错误。我希望您要递增j。 其次是比较,您必须从数组中显式转换值或使用函数equals。 第三,您的if语句必须不在第二个循环中。因为我希望您只想在找到的第三个数组中添加数字即可。
for(int i = 0; i < listVector1.size(); i++) {
for(int j = 0; j < listVector2.size(); j++) {
if (listVector1.get(i).equals(listVector2.get(j))) {
repeats = true;
break;
} else {
repeats = false;
}
}
if(!repeats){
int newValue=listVector1.get(i);
listVector3.add(newValue);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。