1. 人生のループ

私たちの生活の中で、同じ行動を何度も実行する必要があることがよくあります。たとえば、多数のページからなるドキュメントをスキャンする必要があるとします。同じ手順を何度も繰り返すこと:

  • 最初のページをスキャナーにセットします
  • スキャンボタンを押します
  • 次のページをスキャナーに置きます

これを手動で行うのは困難です。このプロセスを何らかの方法で自動化できれば素晴らしいでしょう。

または、別の例を考えてみましょう。受信トレイ内のすべての未読メールをスパムとしてマークしたいとします。かつては、各メールを一度に 1 つずつ選択してスパムとしてマークする必要がありました。

しかし、プログラマーは怠け者なので、ずっと前にこのプロセスを自動化しました。今では、文字のリストを選択して「スパムとしてマーク」をクリックするだけで、電子メール クライアントがリストを実行して各電子メールをスパム フォルダーに移動します。

ここで何を言えばいいでしょうか?コンピューターまたはプログラムがワンクリックで何百、何千もの単調な操作を実行できる場合、非常に便利です。そして今、あなたはこれを行う方法も学びます。


2.whileループ

if-else ステートメントによりプログラミング機能が大幅に拡張され、さまざまな状況でさまざまなアクションを実行するプログラムを作成できるようになりました。しかし、プログラムを桁違いに強力にするもう 1 つのものが、ループです。

whileJava には、 、forfor-eachの4 種類のループがありますdo-while。ここでは、そのうちの最初のものについて詳しく見ていきます。

ループwhileは非常にシンプルです。これは、条件ループ本体の2 つの部分のみで構成されます。ループ本体は、条件が満たされている限り繰り返し実行されますtrue。一般に、whileループは次のようになります。

while (condition)
   statement;
while単一のステートメントを含むループの表記法
while (condition)
{
   block of statements
}
whileステートメントのブロックを含むループの表記法

とてもシンプルです。ステートメントまたはステートメントのブロックは、ループ条件が等しい限り繰り返し実行されます。true

これがその仕組みです。まず、状態がチェックされます。true の場合、ループ本体(ステートメントまたはステートメントのブロック) が実行されます。次に、条件が再度チェックされ、ループ本体が再度実行されます。条件がfalse になるまで続きます。

条件が常に trueの場合、プログラムの実行が停止することはありません。永久にループに陥ってしまいます。

初めてチェックされたときに条件がfalse の場合、ループの本体は一度も実行されません。


3. ループの例

ここでは、実際のループの実際の例をいくつか示します。

コード 説明
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
画面に 5 行が表示されます。
5
4
3
2
1
コード 説明
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
画面に 10 行が表示されます。
0
1
...
8
9
コード 説明
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
数値が入力されている限り、プログラムはキーボードから数値を読み取ります。
コード 説明
while (true)
   System.out.println("C");
プログラムは画面上に文字を延々と表示します。C
コード 説明
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
プログラムはキーボードから行を読み取ります

が入力されるまでexit

前の例では、このequals()メソッドは文字列を比較するために使用されています。文字列が等しい場合、関数は を返しますtrue。文字列が等しくない場合は、 を返しますfalse



4. ループ内のループ

条件ステートメントについて学習すると、条件ステートメントを使用して、複数の条件ステートメントを組み合わせることで複雑なロジックを実装できることがわかりました。つまり、ステートメントif内でステートメントを使用しますif

ループでも同じことができます。ループ内にループを記述するには、最初のループの本体内に 2 番目のループを記述する必要があります。次のようになります。

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
while別のループ内のループ (ステートメントのブロックを含む)while

3 つのタスクを見てみましょう。

タスク 1Mom単語を画面に 4 回表示するプログラムを書きたいとします。ループはまさに私たちが必要とするものです。コードは次のようになります。

コード 説明
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
画面に 4 行が表示されます。
Mom
Mom
Mom
Mom

タスク 2A1 行に5 つの文字 を表示するプログラムを作成したいと考えています。これを行うには、もう一度ループが必要です。コードは次のようになります。

コード 説明
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
の代わりにprintln()、 を使用しますprint()。そうしないと、各文字がA 別の行に配置されてしまいます。

画面出力は次のようになります。
AAAAA

タスク 3。文字 s で構成される四角形を表示したいとしますA。長方形は 4 行×5 列で構成されている必要があります。これを実現するには、入れ子になったループが必要です。最初の例 (4 行を出力する例) を単純に取り上げ、1 行を出力するコードを 2 番目の例のコードに置き換えます。

コード 説明
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
外側のループは紫色です。変数を使用してnループの反復回数をカウントします。

内側のループは緑色です。変数を使用してmループの反復数をカウントします。内側のループが完了したら、カーソルを

次の行に 明示的に移動する必要があります。そうしないと、プログラムが出力するすべての文字が 1 行に収まります。 画面出力は次のようになります。


AAAAA
AAAAA
AAAAA
AAAAA

外側のループと内側のループでは、ループの反復数をカウントするために異なる変数を使用する必要があります。また、System.out.println()内側のループではA同じ行に文字 s が表示されるため、内側のループの後にコマンドを追加する必要もありました。行上の文字が表示されたら、カーソルを新しい行に移動する必要があります。



5. ループの比較 Java と Pascal

皆さんの多くは高校でパスカルを勉強しました。ここでの内容を理解しやすくするために、whilePascal と Java で書かれたループの比較を見てください。Pascal を知らない場合は、この部分を飛ばしてください。

パスカル ジャワ
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}