【问题标题】:Check List for true or false真假核对表
【发布时间】:2014-01-08 06:12:04
【问题描述】:
我是编程新手,我正在尝试创建一个迭代列表并返回 true 或 false 的方法,以检查披萨是否适合素食者。只有当列表中的所有配料都适合素食者时,它才是正确的。
这是我的方法:
public boolean vegStatus(){
boolean veg1 = false;
for(PizzaTopping topping : topList){
if( (topping.isVeg() == true )) {
veg1 = true;
}
else if(topping.isVeg() == false) {
veg1 = false;
}
}
return veg1;
}
这种方法不起作用,它会产生错误的答案。如何更改它以查看列表中的所有浇头,并且仅在所有适合素食者时才返回 true?
【问题讨论】:
标签:
java
list
collections
boolean
【解决方案1】:
请记住,当一个浇头不是素食时,您不需要关心其余的浇头,之后没有什么可以改变比萨饼的状态。因此,无需检查其余部分。 return 只是打破所有循环。如果没有用素食者不喜欢的东西污染披萨,你就知道它一定是素食的。
public boolean vegStatus(){
for(PizzaTopping topping : topList){
if( !topping.isVeg() ) {
return false;
}
}
return true;
}
【解决方案2】:
public boolean vegStatus(){
boolean veg1 = false;
for(PizzaTopping topping : topList){
if( (topping.isVeg() == true )) {
veg1 = true;
}
else {
return false;
}
}
return veg1;
}
【解决方案3】:
您应该将 veg1 变量初始化为 true,并且只有在循环内发现不适合素食者的浇头时才更改它。
public boolean vegStatus(){
boolean veg1 = true;
for(PizzaTopping topping : topList){
if(topping.isVeg() == false) {
veg1 = false;
}
}
return veg1;
}
【解决方案4】:
以下是一个干净的逻辑:
public boolean vegStatus(){
for(PizzaTopping topping : topList) {
if(!topping.isVeg())
return false;
}
return true;
}
它检查所有Toppings,如果其中任何一个不是Veg,它会立即返回false,并且不检查其他(不必,对吧?)。如果它检查了所有这些并且没有一个不是 Veg,它返回 true。
【解决方案5】:
这样做
public boolean vegstatus(){
for(PizzaTopping topping : topList){
if( !topping.isVeg()) {
return false; //Failed so anymore he is not a vegetarian
}
}
return true;// Never failed above condition so he should be vegetarian.
}
【解决方案6】:
你应该这样做......
public boolean vegStatus(){
boolean veg1 = true; // by default its true
for(PizzaTopping topping : topList){
if(topping.isVeg() == false) {
veg1 = false; // if any one id not suitable then its false
}
}
return veg1; // at the end returning the result..
}
如果你有任何疑问,你可以再问...