java - 无法比较 Java 中的 ArrayList 值
问题描述
我正在做一门 Java 课程,在一个练习中,我必须创建三个 ArrayList,要求用户用整数填充前两个,然后比较两个 ArrayList。
不重复的值被添加到第三个 ArrayList。我已经声明了 ArrayLists,使用了 Scanner 来允许用户填充 ArrayLists,这部分工作正常。
当我尝试比较两个 ArrayLists 时,问题就来了。我在这一行中收到各种警报(“if 语句是多余的”、“使用 == 或 !=" 比较整数值、翻转二元运算符的操作数”、“反转 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
。
推荐阅读
- root - 如何使用 Nix 包管理器禁用“私有挂载命名空间”(沙盒)?
- azure - Terraform - Azure IPgroups 标签无故更新
- java - 算法的实验分析 - 如何证明图形是 O(nlogn)?
- json - 无法读取 React + Phoenix 框架中未定义的属性“地图”
- javascript - 如何检查字符串是否仅包含js中的某些字符?
- symfony - 反序列化前的 API 平台验证
- python - 如果在使用 Dash 绘制条形图时单月数据可用,则月份名称在 X 轴上显示不正确
- string - Windows 上的 CMD 从文本行回显变量值
- amazon-web-services - 如何使用 terraform 跨多个 lambda 别名管理权限?
- html - 在 HTML 中自定义输入类型 =“时间”