だから、強化されたforループを理解するのに苦労しています..
整数の配列と整数値を取る、contains() というメソッドを作成します。指定された値が配列に含まれている場合、このメソッドは true を返し、それ以外の場合は false を返します。
boolean contains (int [] x, int y) {
for (y : x) {
}
}
彼らがどのように機能するのか本当にわかりません。明らかに何かを返す必要がありますか?
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
が探しているものと等しい場合(あなたの場合は - y
)return true
、
拡張 for ループは、コロン (:) 記号の左側でデータ型が定義されていないと機能しません。
for (int i : x) // int(in this case) is necessary at left side and array type is necessary at right side
{
}
また、ユーザー定義のコレクションを使用するには、上記のように foreach ループを使用するためにIterableインターフェイスを実装する必要があります。これらの概念は、コレクション フレームワークで確認できます。
配列内の項目を反復処理し、それらの 1 つy
が探している int であるかどうかを確認する必要があります。
あなたの質問から、通常の 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
}
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;
}
for (Type item : array)
。Type
たとえば、ループの前に変数を宣言して省略することはできません。通常の 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