0

これは、解決するのが本当に簡単な問題だと思いますが、理解できません。

配列には整数のリストが含まれており、配列内のすべての数値「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;

ただし、私のコードは配列の最初の 2 つの要素 (つまり 0 と 1) に対してのみ機能します。配列のさらに下にある整数は検出されません。どうすればよいでしょうか?

ありがとうございました。

4

8 に答える 8

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が配列の最後の要素かどうかはチェックしません。繰り返しますが、そうなった場合に何が起こると予想されるかは完全には明らかではありません。
于 2013-10-09T10:35:02.783 に答える
1
for (int i = 0; i < nums.length-1; i++) {    
    if (nums[i] == 2 && nums[i+1] != 3) {
        return false;
    }
}

return true;
于 2013-10-09T10:35:40.383 に答える
1

'x'数字の後に が続かない場合、このコードは False を返し'y'ます。

for (int i = 0; i < nums.length-1; i++)
{
    if(nums[i] == 2 && nums[i+1] != 3) {
        return false;
    }
}
return true;
于 2013-10-09T10:35:59.253 に答える
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;
于 2013-10-09T12:10:37.323 に答える
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;
  }
于 2013-10-10T10:21:56.997 に答える
0

コードは常に最初の反復で返されます。If と else ブロックの両方に return が書かれているからです。

return;内部に他のロジックがある場合は、else ケースまたは from else ケースのみを削除します。

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 が返されます。後に y がない x がある場合は、false を返します。

于 2013-10-09T11:16:10.453 に答える
0
for (int i = 0; i < nums.length-1; i++)
  {
    if(nums[i] == 2 && nums[i+1] == 3)
    {
    return true;
    }

  }
  return false;
于 2013-10-09T10:35:16.097 に答える