Javaでforループを書く方法

ループは、条件が満たされるまで一連の命令を完了する、非常に強力なプログラミングツールです。非常に便利であり、最初に学ぶべきプログラミングの概念の1つです。さまざまな種類のループがありますが、forループは間違いなく最も有用なループの1つです。

Javaでのforループ

forループは、条件が満たされるまでコードブロックを実行し続けます。forループはループの最後ではなく、最初に条件をチェックすることに注意することが重要です。つまり、条件が満たされている場合、ループは開始されません。

forループの構文は、プログラミング言語間で似ています。したがって、別のプログラミング言語でforループを作成した場合、Javaのforループはなじみがあるでしょう。ただし、Javaにまったく慣れていない場合は、forループなどの高度なトピックを学ぶ前に、初心者向けのチュートリアルを読むことをお勧めします。

for([statement1]; [condition]; [statement2]){
//code to execute each loop
}

キーワードforはforループを示します。ループが継続する期間を決定する条件は、角括弧内にあります。

最初の文は、forループが開始されると1回実行されます。条件は、ループを停止するタイミングを定義します。

2番目の文は、すべてのループの最後に実行されます。セミコロンはstatement1と条件の終わりを示します。

通常、文はカウンタを作成するために使用され、カウンタが特定の番号に達すると条件がループを停止します。最後に、各ループで実行されるコードは中括弧で囲まれます。

public class Main{
public static void main(String[] args) {
for(int i = 1; i < 4; i++){
System.out.print(i);
}
}
}
//Output: 123

上記の例では、forループはiの値を出力します。キーワードforはループを初期化します。変数iは最初は1に設定されます。条件は、iが4以上であるかどうかをチェックします。これは当てはまらないため、ループが実行されます。ループコードはiの値を出力します。これは、この時点ではまだ1です。

ループコードが完了すると、iが1ずつ増加し、ループが再び開始されます。3回目のループの終わりに、iが4に増加します。次のループが始まると、条件が満たされるため、ループは停止します。

ネストされたforループ

forループのコツがつかめたら、ネストされたforループを作成してみましょう。これは、別のforループの中にforループがある場合です。これは、2つのループがどのように相互作用するかを理解することが難しい場合があるため、高度なテクニックです。ネストされたforループのしくみを視覚化するには、ネストされたforループで次のパターンを作成します。

*
**
***

これを作成するには、各行に出力される星の数と、作成する行の数を制御するループが1つずつ必要です。ネストされたforループを初めて使用する場合は、どちらのループが内部ループであるかを判断することが困難な場合があります。この場合、星を出力するループが内部ループです。新しい行が作成されるたびにそのループを実行する必要があります。

ネストされたループを作成するときは、カウンタ変数の名前を選択するときに注意してください。プログラマーは多くの場合、汎用のiカウンタを使用しますが、複数のループが相互作用すると、汎用のカウンタを使用すると混乱します。

for(int lineCounter = 1; lineCounter < 4; lineCounter++){
for(int starCounter = 1; starCounter <= lineCounter; starCounter++){
System.out.print("*");
}
System.out.print("\n");
}

この例を詳しく見て、しくみを理解しましょう。

最初のループは、作成する行の数をカウントしています。ループが3回実行されると、停止します。

次のループはもう少し複雑です。このループは、各行に出力される星の数とを制御します。このパターンでは、行番号と同じ数の星が必要になります。最初の行には1つの星があり、2番目の行には2つの星があり、3番目の行には3つの星があります。したがって、そのループでは、現在の行カウンタと同じ数の星を出力する必要があります。

星ループが完了すると、行ループは\nを出力して新しい行を作成します。これは、改行のコマンドです。

無限ループ

どのタイプのループをコーディングする場合でも、1つの危険性は、誤って無限ループを作成することです。これらは、決して停止しないループです。無限ループが必要な場合もありますが、一般的に、ループの条件が慎重に計画されていない場合に誤って作成されます。このような場合、プログラムは強制的に終了するまで実行され続けます。

無限ループを作成するには、次の構文を使用できます。

for(;;){
//code that never stops looping
}

配列でforループを使用する

forループを使用する一般的な方法は、配列を反復処理することです。たとえば、配列内のすべての文字列を出力したい場合、単に次のように言うことはできません。

System.out.print([array]);

このコマンドは、配列の内容ではなく、配列に関する情報を印刷します。配列の内容を出力するには、配列内の各要素を個別に印刷する必要があります。これはコード化に時間がかかりますが、各要素を処理するためにforループを作成できます。

String[] words = {"Hello", " ", "World", "!"};

for(int i = 0; i < words.length; i ++){
System.out.print(words[i]);
}

配列の位置は1からではなく0から始まることに注意してください。そのため、ループは0から開始します。最初のループではHelloが出力され、2番目のループではスペースが出力されます。4番目のループの後、カウンタは4に増加します。これは、配列の長さである4よりも大きくありません。これにより、ループが停止します。

出力:

Hello World!

for-eachループ

forループを使用して配列を反復処理できますが、for-eachループを使用する方が簡単です。これらのループは配列専用に設計されています。for-eachループは配列の各要素を処理し、コードを実行します。for-eachループの構文は少し異なります。キーワードforは引き続き使用されますが、条件は指定されません。

for([dataType] [arrayElement] : [array]){
//code to be executed
}

この構文を使用して、前の例をfor-eachループとして書き直すことができます。

String[] words = {"Hello", " ", "World", "!"};

for(String word : words){
System.out.print(word);
}

ループはキーワードforで開始されます。次に、配列内のデータが文字列であることを指定します。次に、ループを反復処理するときに配列内の要素を参照するための変数名を選択します。この場合、wordを使用しました。その後にコロンと反復処理する配列の名前が続きます。これで、ループ内で変数wordを使用して配列の各要素を参照するだけです。

forループを使用するタイミング

forループは、多くのコーディングを節約できる優れたツールです。ループを実行する回数を正確に把握している場合に使用するのに最適なループのタイプです。forループをネストすることで、複雑性を高めることさえできます。

ネストされたforループは、多次元配列を扱う場合に特に便利です。forループは学習が容易で、初心者にとって重要なスキルです。このテクニックを使用すれば、不要な反復コードをコーディングする必要がなくなります。