我写了这么简单的代码:
我在班级的构造函数中写了这一行:List element = new ArrayList();
我有一个名为cost
的变量,其类型为int
一个方法将返回三个包含不同对象的列表:listOne, listTwo, listThree
我在下面编写的另一种方法代码中,该方法将使用在上述方法中创建的那些列表。对于上面的三个列表,此方法将被调用三次。每个名单的每个电话。
// begining of the method:
int cost = 0;
if(cost==0){
element = listOne;
cost = 3;
}
if(cost<4){
element = listtwo;
cost = 6;
}
// end
System.out.println(element.toString());
不幸的是,它不会打印listTwo
而是打印listThree
(如果我们有4个或更多列表,它将打印最后一个列表)!
if-else条件有问题吗?
感谢
编辑:这是我的主要代码,但其条件与上面的代码类似: 以下代码中的auxiliaryList
分别为listOne
或list Two
或listThree
。
cost = 0;
public void method {
System.out.println(element.toString());//number one
if (cost== 0) {
element = auxiliaryList;
cost = 3;
}
else if( cost<4){
element =auxiliaryList;
cost = 6;
}
}
return;
}
}
使用//number one
声明的行也告诉我,在进入if / else条件之前,元素列表将被设置为方法中的当前列表。
答案 0 :(得分:5)
if-else条件是否有任何问题。
是的 - 问题是你不是使用 if / else,你只是使用两个if语句。
更改第二个if
以使用else
,这样就可以了:
if (cost == 0) {
element = listOne;
cost = 3;
} else if (cost < 4) {
element = listtwo;
cost = 6;
}
问题是,如果cost
为0,它将进入第一个块,将cost
设置为3,然后进入第二个块,因为3更少没有“别的”可以阻止这种情况发生 - 两个if
块完全独立。