【问题标题】:Wrong boolean statement错误的布尔语句
【发布时间】:2016-04-28 02:06:38
【问题描述】:

如果数组中没有元素包含 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,我得到了 false back,但如果第二个数字是 5,我得到了 true。所以最终的回报是真实的,这是一个错误。

我该如何解决这个问题?

感谢您的帮助。

【问题讨论】:

  • 返回一个布尔表达式 TRUE,对不起 :-)
  • 关于这一行:boolean no23(int[] nums) 1) boolean 是如何定义的? 2) 参数的正确格式为:int nums[],因此代码无法编译。关于代码逻辑。强烈建议:将返回变量初始化为true,并移除else代码块。在if代码块中,设置返回变量为false后,通过break;退出循环

标签: c arrays boolean


【解决方案1】:

no23 = false; 之后加上break;,因为一旦它是假的,它就永远是假的,你不需要再进一步了。

另外,如果将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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2021-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    相关资源
    最近更新 更多