-1

だから、強化されたforループを理解するのに苦労しています..

整数の配列と整数値を取る、contains() というメソッドを作成します。指定された値が配列に含まれている場合、このメソッドは true を返し、それ以外の場合は false を返します。

boolean contains (int [] x, int y) {
    for (y : x) {

    }

}

彼らがどのように機能するのか本当にわかりません。明らかに何かを返す必要がありますか?

4

4 に答える 4

6

y数値が配列内に含まれているかどうかを確認する場合xは、次の手順を実行する必要があります。

boolean contains (int [] x, int y) {
    for (int i : x) {
       if (i == y) return true;
    }

    return false;
}

このタイプのforループは、しばしば と呼ばれfor-eachます。int i : x基本的にはGo through the loop 'x' and name the current variable 'i'. 次に、現在の変数iが探しているものと等しい場合(あなたの場合は - yreturn true

于 2013-05-20T09:42:47.300 に答える
0

拡張 for ループは、コロン (:) 記号の左側でデータ型が定義されていないと機能しません。

for (int i : x)   // int(in this case) is necessary at left side and array type is necessary at right side
{

}

また、ユーザー定義のコレクションを使用するには、上記のように foreach ループを使用するためにIterableインターフェイスを実装する必要があります。これらの概念は、コレクション フレームワークで確認できます。

于 2013-05-20T09:46:59.520 に答える
0

最初のステップ: アルゴリズムは何ですか?

配列内の項目を反復処理し、それらの 1 つyが探している int であるかどうかを確認する必要があります。

2 番目のステップ: 簡単に感じられる場合は、通常の for ループを使用します

あなたの質問から、通常の for ループの方が快適だと思います。

boolean contains (int [] x, int y) {
    for (int i = 0; i < x.length; i++) { //loop over each item in the array
        if (x[i] == y) return true; //if the i-th item in x is y,
                                    //you are done because y was in x
    }
    return false; //you have not found y, so you return false here
}

3 番目のステップ: for-each ループに変換する

boolean contains (int [] x, int y) {
    for (int item : x) { //in this loop, item is x[i] of the previous code
        if (item == y) return true;
    }
    return false;
}

ノート:

  • あなたのコードでは、ループ内で y を再利用していますが、これはあなたが望むものではありません: y はあなたが探しているものであり、それを x の内容と比較する必要があります。
  • 配列に対する for-each ループの構文は次のとおりですfor (Type item : array)Typeたとえば、ループの前に変数を宣言して省略することはできません。
于 2013-05-20T09:48:06.747 に答える
0

通常の for ループを使用すると、次のように記述できます。

boolean contains (int [] x, int y) {
    for (int i=0; i<x.length; i++) {
         if(y == x[i] return true;
    }    
    return false;
}

ただし、拡張ループを使用すると、次のように簡略化できます。

boolean contains (int [] x, int y) {
    for (int k: x) {
       if(y == k) return true;
    }
    return false;
}

それはちょっとした便利さです。

以下が役に立つかもしれません: https://blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with

于 2013-05-20T09:49:41.553 に答える