我的任务是,如果数组中没有元素包含2或3,则返回一个布尔表达式。

boolean no23(int[] nums)
{
 boolean no23 = false;

 for (int i=0; i<2; i++)
 {
   if (nums[i]==2 || nums[i]==3)
   {
     no23 = false;
   }
   else
   {
     no23 = true;
   }
 }
 return no23;
}


我的问题是:如果第一个数字为3,则返回假,但是如果第二个数字为5,则返回真。所以最终的回报是正确的,那是一个错误。

我怎么解决这个问题?

谢谢你的帮助。

最佳答案

break;之后放置no23 = false;,因为一旦它为假,它将永远为假,并且您无需再做任何进一步的操作。

另外,如果将no23初始化为true,则无需继续在循环中进行设置,并且可以完全删除else子句。

然后,您可能会意识到根本不需要no23。如果找到2或3,则可以使用return false;,而在函数末尾可以使用return true;,因为如果将其一直循环到循环中,则找不到2或3。

现在您有了:

boolean no23(int[] nums)
{
    for (int i=0;i<2;i++)
    {
      if (nums[i]==2 || nums[i]==3)
      {
         return false;
      }
    }
    return true;
}

关于c - 错误的 boolean 语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34930351/

10-11 19:40