Java,如果数组中的“x”紧挨着“y”,则返回true

Java,如果数组中的“x”紧挨着“y”,则返回true,java,arrays,Java,Arrays,我想,这是一个非常简单的问题,我无法解决 数组包含一个整数列表,如果数组中的每个数字“x”后跟数字“y”,我想返回true 所以带有{x,3,4,y}或{x,x,y,4,5}或{5,8,x,x}的数组是假的 而带有{x,y,4,1}或{x,y,5,1,x,y}的数组则为真 这就是我迄今为止所尝试的: for (int i = 0; i < nums.length-1; i++) { if (nums[i] == x && nums[i+1] == y) {

我想,这是一个非常简单的问题,我无法解决

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

所以带有{x,3,4,y}或{x,x,y,4,5}或{5,8,x,x}的数组是假的

而带有{x,y,4,1}或{x,y,5,1,x,y}的数组则为真

这就是我迄今为止所尝试的:

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。它不会在数组中进一步检测到任何整数,那么我该怎么做呢

多谢各位

如果数组中的每个数字“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;
注意事项:

如果数组中不存在x,则返回true。这个问题不清楚这是否是你想要的行为。 这不会检查x是否是数组的最后一个元素。同样,如果是这样的话,你还不完全清楚你会期望发生什么。
如果“x”号后面没有“y”,则此代码将返回False

当代码到达return语句时,它停止执行函数并返回指定的值,这就是为什么for只执行一次

由于希望将条件应用于数组中的所有元素,因此当发现2后面没有3时,必须返回false。如果2后面跟着3,您只需继续检查下一个位置

像这样:

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

您的代码总是在第一次迭代中返回。因为您已经在If和else块中写入了return

移除else盒或仅移除退货;如果里面有任何其他逻辑,则从else case开始

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。

请尝试以下操作

    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;

您可以尝试以下方法:

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;
  }

实际上,我不明白为什么根据您的要求在第二个数组上返回true:数组中的第二个2后面没有2。如果我指向最后一个元素并且nums[I]=2,则此代码可能会抛出ArrayIndexOutofBoundException。必须进行绑定检查如果我指向最后一个元素且nums[i]=2,则此代码可能会抛出ArrayIndexOutofBoundException。必须进行绑定检查我不确定如何进行,因为我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;
    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;
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;
  }