我写了这么简单的代码:
我在我的类的构造函数中写了这一行: 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());
Run Code Online (Sandbox Code Playgroud)不幸的是,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;
}
}
Run Code Online (Sandbox Code Playgroud)
声明的行也//number one告诉我,在进入if/else条件之前,元素列表将被设置为方法中的当前列表.
if-else条件有问题吗?
是的 - 问题是你没有使用 if/else,你只是使用两个if语句.
改变第二个if使用an else,它会没事的:
if (cost == 0) {
element = listOne;
cost = 3;
} else if (cost < 4) {
element = listtwo;
cost = 6;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果cost是0,它将进入第一个块,设置cost为3,然后进入第二个块,因为3小于4.没有"其他"来阻止这种情况发生 - 两个if块完全独立.
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |