【问题标题】: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?

【问题讨论】:

  • 当你发现一个不是蔬菜的配料时返回 false。

标签: 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.. 
          }
          

          如果你有任何疑问,你可以再问...

          【讨论】:

            猜你喜欢
            • 2015-03-30
            • 1970-01-01
            • 1970-01-01
            • 2014-02-17
            • 1970-01-01
            • 2014-10-25
            • 2018-07-01
            • 2014-09-07
            • 1970-01-01
            相关资源
            最近更新 更多