Java,如果'x'在数组中的'y'旁边,则返回true

时间:2013-10-09 10:32:55

标签: java arrays

我想,这是一个非常简单的问题需要解决,但我无法理解。

一个数组包含一个整数列表,如果数组中的每个数字'x'后跟数字'y',我想返回true。

因此,{x,3,4,y}{x,x,y,4,5}{5,8,x,x}的数组将为false

{x,y,4,1}{x,y,5,1,x,y}的数组为true

这是我到目前为止所尝试的:

for (int i = 0; i < nums.length-1; i++)
{
    if (nums[i] == x && nums[i+1] == y)
    {
        return true;
    }
    else
    {
        return false;
    }
}

return false;

然而,我的代码只适用于数组中的前两个元素(所以0和1)。它不会检测到阵列中的任何整数,所以我该怎么做?

谢谢。

8 个答案:

答案 0 :(得分:5)

  

如果数组中的每个数字'x'后跟数字'y',我想返回true。

您需要摆脱else并修改支票,如下所示:

for (int i = 0; i < nums.length - 1; i++)
{
    if (nums[i] == x && nums[i + 1] != y)
    {
        return false;
    }
}

return true;

注意事项:

  1. 如果数组中不存在true,则返回x。从问题中不清楚这是否是你想要的行为。
  2. 这不会检查x是否是数组的最后一个元素。再说一次,如果是这样的话,你发明的事情并不完全清楚。

答案 1 :(得分:1)

for (int i = 0; i < nums.length-1; i++) {    
    if (nums[i] == 2 && nums[i+1] != 3) {
        return false;
    }
}

return true;

答案 2 :(得分:1)

如果'x'号后面没有'y',则此代码将返回False。

for (int i = 0; i < nums.length-1; i++)
{
    if(nums[i] == 2 && nums[i+1] != 3) {
        return false;
    }
}
return true;

答案 3 :(得分:1)

当代码到达return语句时,它会停止执行该函数并返回指定的值,这就是你的for只执行一次的原因。

由于您希望条件应用于数组中的所有元素,因此当您找到一个未跟随3的2时,您必须返回false。如果2后跟3,则只需继续检查下一个职位。

像这样:

for (int i = 0; i < nums.length-1; i++)
{ 
     if(nums[i] == 2 && nums[i+1] != 3)
     {
          return false;
     }
}
return true;

答案 4 :(得分:0)

for (int i = 0; i < nums.length-1; i++)
  {
    if(nums[i] == 2 && nums[i+1] == 3)
    {
    return true;
    }

  }
  return false;

答案 5 :(得分:0)

您的代码始终在第一次迭代中返回。因为你在if和else块中都有返回写入。

如果内部还有其他逻辑,则从else案例中删除else案例或仅删除return;

int x = 2;
int y=3;
    for (int i = 0; i < nums.length-1; i++) {    
        if (nums[i] == x && nums[i+1] != y) {
            return false;
        }
    }
return true;

如果数组中没有x,则返回true。如果你有任何x之后没有y,它将返回false。

答案 6 :(得分:0)

试试以下

    boolean flag = false;
      for (int i = 0; i <= (nums.length-1); i++) {
         if(nums[i] == x) {
              if (i == (nums.length-1)) {
                  if(nums[i] == x) {
                      flag = false;
                  }
              } else {
                  if(nums[i+1] == y) {
                      flag = true;
                  } else {
                      flag = false;
                      break;
                  }
              }
           }
      }
      return flag;

答案 7 :(得分:0)

您可以尝试以下方法:

if(nums[nums.length - 1] == x)
  {
  return false;
  }
else
  {
  boolean flag = false;

  for(i = 0; i < nums.length - 1; i++)
    {
    if(nums[i] == x)
      {
      if(nums[i + 1] == y)
        {
        flag = true;
        }
      else
        {
        flag = false;
        break;
        }
      }
    }

  return flag;
  }