java如何在不同的数据类型上使用if条件?
我有一个整数数组列表,我想检查该列表上的特定数据是否与声明的变量相同,但是,如果我使用if(variable == arraylist.get(i)
它不起作用,我试图找到将列表转换为整数的方法,但找不到正确的解决方案
public static void main(String[] args) {
List reg = new ArrayList();
//int add;
reg.add(2);
reg.add(5);
reg.add(6);
Random rand = new Random();
int newReg = rand.nextInt(4)+1;
for(int i = 0; i < reg.size(); i++){
if(newReg == reg.get(i)){
//do stuff
}
}
}
# 1 楼答案
问题是自动装箱隐藏了Java中primitve类型和引用类型之间的转换。它通常运行良好,但在本例中,您将对象引用与整数进行比较。尝试以下方法:
# 2 楼答案
当你注册的时候。获取(i)它正在返回对象。这里有多个选项: A.将列表定义为整数列表,即list reg=new ArrayList(); B.将cast对象键入int
首选选项是A
# 3 楼答案
我刚刚尝试了你的代码,在Netbeans中,它在你比较的行中显示了一个错误。一般的规则是,在比较任何引用类型时,不要使用“==”(除非你真的想检查它是否是同一个对象),而是使用equals()。以下工作如下: