【问题标题】:Trying to create a method to check if array contains only a 1 or 4尝试创建一种方法来检查数组是否仅包含 1 或 4
【发布时间】:2015-08-02 10:36:51
【问题描述】:
static boolean checkNum(int[] array) {

    boolean bool = true;

    for (int i = 0; i < array.length; i++) {

        if (array[i] != 1 || array[i] != 4) {
            return !bool;
        }
        i++;
    }
    return bool;
}

我尝试了几种编码方式,但没有任何运气。我应该怎么做?它只需要遍历数组并找到任何不是 1 或 4 的东西,否则它应该是正确的。

【问题讨论】:

    标签: java arrays methods


    【解决方案1】:

    您只检查每个第二个元素,因为您将 i 递增两次。

    删除此行:i++;

    您已经在此处的 for 循环中递增 ifor(int i = 0; i &lt; array.length; i++){

    【讨论】:

    • 它仍然只打印 false :S 所以这不是问题
    【解决方案2】:

    您的代码中有两个问题:

    • array[i] != 1 || array[i] !=4总是评估为true。任何数字都不是 1 或不是 4。

      您正在寻找条件array[i] != 1 &amp;&amp; array[i] !=4,它表示“数字不是1 并且 不是4”。另一个有效的替代方案是!(array[i] == 1 || array[i] == 4),它表示“数字不是either 1 or 4”。你最终选择哪一个取决于你的个人喜好。

    • 正如其他人指出的那样,循环内的 i++ 是多余的,并且使循环跳过每个第二个元素。


    这个版本应该可以解决你的问题:

    static boolean checkNum(int[] array) {
    
        for (int i = 0; i < array.length; i++) {
    
            if (array[i] != 1 && array[i] != 4) {
                return false;
            }
    
        }
    
        return true;
    }
    

    您知道如何摆脱变量bool

    奖励:如果您使用 forEach 循环而不是 for 循环,那就更清楚了:

    static boolean checkNum(int[] array) {
    
        for (int i : array) {
    
            if (i != 1 && i != 4) {
                return false;
            }
    
        }
    
        return true;
    }
    

    【讨论】:

    • 太棒了!介意接受我的答案是正确的吗? :-)
    • 不重要,但我发现!(i == 1 || i == 4) 更容易阅读/理解。
    • 感谢您的意见,为了完整起见,我将其添加到帖子中!
    【解决方案3】:

    if(数组[i] != 1 && 数组[i] !=4){ 要么 if(!(array[i] = 1 || array[i] =4)){

    您已经成功地将两种可以正常工作的正确测试混为一谈,并产生了一种无效的测试。很容易做到,因此请务必检查您的复杂布尔表达式。

    祝你好运:)

    【讨论】:

      【解决方案4】:

      逻辑上,如果当前位置的值不是1并且不是4则返回false。

      static boolean checkNum(int[] array){
          for(int i = 0; i < array.length; i++){
              if(array[i] != 1 && array[i] != 4){
                  return false;
              }
          }
          return true;
      }
      

      我也会推荐for-each loop 喜欢

      static boolean checkNum(int[] array){
          for(int val : array){
              if (val != 1 && val != 4){
                  return false;
              }
          }
          return true;
      }
      

      【讨论】:

      • 也许是时候转移到more modern documentation(我认为是一样的)?
      • @user1803551 链接还是不错的。它表明了该功能的年龄。在这种情况下,for-each 循环是在 Java 5 中添加的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-06
      • 2018-09-19
      • 2019-10-21
      • 2011-04-03
      • 2014-04-02
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多