-2

私はjava1001コースをやっているので、オブジェクト指向プログラミングはしていません。配列に関するこの問題を理解するのに苦労しています。

int 配列を指定し、2 または 3 が含まれている場合は true を出力します。 // {2, 5} -> true // {4, 3} -> true // {4, 5} -> false //

 Scanner keyboard = new Scanner(System.in);
  int size = keyboard.nextInt();
  int[] a = new int[size];

  for(int i = 0 ;i<a.length;i++)
    a[i] = keyboard.nextInt();

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

    if(a[i] == 2 || a[i] == 3)
    System.out.println(true);

    else
    System.out.println(false);

テストすると、「truefalse」、「falsetrue」、「falsefalse」が返されます最初の整数が true の場合、配列全体の調査を停止するにはどうすればよいですか?

私を助けることができる人はいますか?

前もって感謝します :)

4

5 に答える 5

1

How can I make it stop examining the entire array if the first integer yields true? 配列の最初の整数のみをチェックしたい場合は、次のようにします。

for(int i = 0; I < a.length; i++)
    if(a[i] == 2 || a[i] == 3)
    {
        System.out.println(true);
        break;
    }

if (i == a.length)
    System.out.println(false);

少なくとも理論的には、パフォーマンスを向上させるために、コード全体を 1 つのループに収めることもできます。検討:

Scanner keyboard = new Scanner(System.in);
int size = keyboard.nextInt();
int[] a = new int[size];

int pos = -1;
for(int i = 0; i < a.length; i++)
{
    a[i] = keyboard.nextInt();
    if(pos != -1)
    {
        if((a[i] == 2 || a[i] == 3) && )
        {
            pos = i;
        }
    }
}

if(pos == -1)
{
    System.out.println(false);
}
else
{
    System.out.println(true + " (index = " + pos);
}
于 2013-10-07T12:23:01.517 に答える
0

以下のことがお役に立てば幸いです

Scanner keyboard = new Scanner(System.in);
int size = keyboard.nextInt();
int[] a = new int[size];
boolean flag = false;

for(int i = 0 ;i<a.length;i++)
a[i] = keyboard.nextInt();

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

if(a[i] == 2 || a[i] == 3){
flag = true;
break;
}

if(flag)
System.out.println("True");
else
System.out.println("False");
于 2013-10-07T12:10:33.620 に答える
0

breakキーワードを使用して開始できますが、これで問題が解決するわけではありません。

 if(a[i] == 2 || a[i] == 3) {
     System.out.println(true);
     break;
 }

ブレイクは何をしますか?

Break は、ループ内で実行していることを単純に停止します。a を循環していて、for loopそれ以上循環する必要がない場合は、breakキーワードを使用すると、ループが停止します。

この場合、どのように機能しますか?

ループが a2または a3に到達するとすぐに、 が出力されtrueます。その後、 にヒットしbreak、ループが終了します。

他の何かにヒットした場合は、 に移動し、elseを出力しますfalse。ただし、これは望ましくないため、少し異なる方法で行います。疑似コードは次のとおりです。

boolean b = false;

for( i from 0 to size)
{
    if this is a 2 or a 3
       b = true;
       break;
}

// Print the result.
System.out.println(b);
于 2013-10-07T12:00:56.930 に答える
0

boolean配列に2または3が含まれているかどうかを確認するために使用できます。例:

boolean isFound = false;
for(int i = 0 ; i < a.length && !isFound; i++) {
    isFound = a[i] == 2 || a[i] == 3;
}
System.out.println(isFound);
于 2013-10-07T12:09:22.120 に答える
0

これを試して:

int tam = a.length;
for(int i = 0 ;i<tam;i++)
   if(a[i] == 2 || a[i] == 3)
   {
      System.out.println(true);
      tam = -1;
   }
   else if (tam == a.length)
      System.out.println(false);
于 2013-10-07T12:09:35.420 に答える