Java 制御フロー:条件分岐とループ

JavaJavaBeginner
オンラインで実践に進む

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Java の制御フロー構造の世界に浸ります。これらは、プログラムが決定を下し、アクションを繰り返すための必須ツールです。主に 3 つの概念を扱います。

  1. 決定を行うための if-else 文
  2. 既知の回数だけアクションを繰り返すための for ループ
  3. 何回繰り返す必要があるかわからない場合にアクションを繰り返すための while ループ

これらの用語が慣れ親しんでいない場合でも心配しないでください。それぞれを詳細に説明します。この実験が終わるとき、決定を下し、アクションを繰り返すことができる Java プログラムを書けるようになり、コーディングの旅においてまったく新しい可能性の世界が開かれます!

これは Guided Lab です。学習と実践を支援するためのステップバイステップの指示を提供します。各ステップを完了し、実践的な経験を積むために、指示に注意深く従ってください。過去のデータによると、この 初級 レベルの実験の完了率は 90.43%です。学習者から 100% の好評価を得ています。

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/BasicSyntaxGroup -.-> java/variables("Variables") java/BasicSyntaxGroup -.-> java/if_else("If...Else") java/BasicSyntaxGroup -.-> java/for_loop("For Loop") java/BasicSyntaxGroup -.-> java/while_loop("While Loop") java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/user_input("User Input") subgraph Lab Skills java/variables -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} java/if_else -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} java/for_loop -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} java/while_loop -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} java/output -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} java/user_input -.-> lab-413751{{"Java 制御フロー:条件分岐とループ"}} end

if-else 文の理解

天気に関するアドバイスを提供するプログラムを作成しているとしましょう。温度に基づいて異なることを提案したいと思います。ここで if-else 文が便利になります!

  1. WebIDE でWeatherAdvisor.javaファイルを開きます。このコードが見えます。

    public class WeatherAdvisor {
        public static void main(String[] args) {
            int temperature = 28; // 摂氏の温度
    
            System.out.println("The temperature is " + temperature + "°C.");
    
            // TODO: ここにif-else文を追加して、天気に関するアドバイスを提供します
        }
    }

    このコードの解説を以下に示します。

    1. public class WeatherAdvisor:

      • この行は、WeatherAdvisorという名前の public クラスを宣言します。
      • Java では、すべてのプログラムには少なくとも 1 つのクラスが必要であり、クラス名はファイル名(この場合は WeatherAdvisor.java)と一致する必要があります。
    2. public static void main(String[] args):

      • これは main メソッドで、すべての Java プログラムのエントリポイントです。
      • public: このメソッドはクラスの外からアクセスできます。
      • static: このメソッドはクラス自体に属し、クラスの特定のインスタンスには属しません。
      • void: このメソッドは戻り値を返しません。
      • main: これはメソッドの名前です。Java はプログラムの実行を開始するために、「main」という名前のメソッドを探します。
      • (String[] args): これにより、メソッドはコマンドライン引数を受け取ることができます(この例では使用していません)。
    3. int temperature = 28;:

      • この行は、temperatureという名前の整数型変数を宣言し、それを 28 の値で初期化します。
      • intは Java で整数のデータ型です。
      • コメント// Temperature in Celsiusは、この値が表すものを説明しています。
    4. System.out.println("The temperature is " + temperature + "°C.");:

      • この行は、コンソールにメッセージを出力します。
      • System.out.println()は、テキストを出力して新しい行に移動するメソッドです。
      • +演算子はここで文字列連結に使用され、テキストとtemperature変数の値を結合します。
      • 末尾の°Cは、出力に摂氏記号を追加します。

    この基本構造は、温度を定義して出力するプログラムをセットアップします。これは、温度値に基づいて天気に関するアドバイスを与えるために、後で追加する if-else 文などのより複雑なロジックを追加するための基礎を提供します。

  2. TODO コメントを以下のコードに置き換えます。

    if (temperature > 30) {
        System.out.println("It's a hot day. Remember to stay hydrated!");
    } else if (temperature > 20) {
        System.out.println("It's a nice warm day. Enjoy the weather!");
    } else if (temperature > 10) {
        System.out.println("It's a bit cool. You might need a light jacket.");
    } else {
        System.out.println("It's cold. Wear warm clothes!");
    }
If else code example

これを解説しましょう。

  • if文は、温度が摂氏 30 度以上であるかどうかをチェックします。
  • そうでなければ、最初のelse ifに移動して、摂氏 20 度以上であるかどうかをチェックします。
  • これが条件が真になるまで続き、または最後のelseに到達するまで続きます。
  • これらのブロックのうち、1 つだけが実行されます。条件が真になると、Java は残りのすべてをスキップします。
  1. ファイルを保存します。WebIDE を含むほとんどの IDE では、Ctrl+S(Mac の場合は Cmd+S)を押すことで保存できます。

  2. 次に、プログラムをコンパイルしましょう。WebIDE の下部のターミナルに以下を入力します。

    javac ~/project/WeatherAdvisor.java

    このコマンドは Java にコードをコンパイルするように指示します。出力が表示されなければ、良いことです!エラーがなかったことを意味します。

  3. プログラムを実行するには、以下を入力します。

    java -cp ~/project WeatherAdvisor

    -cp ~/projectの部分は、Java にコンパイル済みのコードを見つける場所を教えます。

  4. 以下の出力が表示されるはずです。

    The temperature is 28°C.
    It's a nice warm day. Enjoy the weather!

    これはコードと一致します。なぜなら、28°C は 20°C を超えていますが 30°C を超えていません。

  5. 実験してみましょう!コード内のtemperature値を 35 に変更し、保存、コンパイル、実行し直します。以下が表示されるはずです。

    The temperature is 35°C.
    It's a hot day. Remember to stay hydrated!
  6. 温度を 15 と 5 に変更し、それぞれコンパイルと実行を試してみましょう。出力がどのように変化するか見てみましょう!

おめでとうございます!あなたは今、決定を下すプログラムを書きました。これはプログラミングにおける基本的な概念であり、常に使用することになります。

for ループの使い方

次に、for ループについて学びましょう。特定の回数だけ何かを繰り返したい場合、たとえば掛け算表を作成する場合に便利です!

  1. WebIDE でMultiplicationTable.javaファイルを開きます。こうなっています。

    public class MultiplicationTable {
        public static void main(String[] args) {
            int number = 5;
            System.out.println("Multiplication table for " + number + ":");
    
            // TODO: ここにforループを追加して、掛け算表を表示します
        }
    }
  2. TODO コメントをこの for ループに置き換えます。

    for (int i = 1; i <= 10; i++) {
        int result = number * i;
        System.out.println(number + " x " + i + " = " + result);
    }

    これを解説しましょう。

    • for (int i = 1; i <= 10; i++)は for ループ文です。
      • int i = 1は、変数iを作成して 1 に設定します。これは最初に 1 回だけ起こります。
      • i <= 10は条件です。これが真の間、ループは続きます。
      • i++は、ループが終了するたびにiを 1 増やします。
    • ループ内では、numberiを掛けて結果を表示します。
    • これは 10 回繰り返され、iは 1 から 10 まで増加します。
  3. ファイルを保存します。

  4. プログラムをコンパイルします。

    javac ~/project/MultiplicationTable.java
  5. プログラムを実行します。

    java -cp ~/project MultiplicationTable
  6. 5 の掛け算表が表示されるはずです。

    Multiplication table for 5:
    5 x 1 = 5
    5 x 2 = 10
    5 x 3 = 15
    5 x 4 = 20
    5 x 5 = 25
    5 x 6 = 30
    5 x 7 = 35
    5 x 8 = 40
    5 x 9 = 45
    5 x 10 = 50

    1 から 10 までの表が表示されるのがわかりますか?これが私たちの for ループの働きです!

  7. 実験してみましょう!number変数を 7 に変更し、保存、コンパイル、実行し直します。7 の掛け算表が表示されるはずです。

  8. もっと見てみたいですか?for ループ内のi <= 10i <= 15に変更してみましょう。これにより、表が 10 ではなく 15 まで表示されるようになります。

for ループは、何回繰り返すかを正確に知っている場合に非常に便利です。プログラミングの旅でたくさん使います!

while ループの探究

while ループは、事前に何回繰り返す必要があるかわからない状況に最適です。数字当てゲームを作ってみましょう!

  1. WebIDE でGuessTheNumber.javaファイルを開きます。こうなっています。

    import java.util.Random;
    import java.util.Scanner;
    
    public class GuessTheNumber {
        public static void main(String[] args) {
            Random random = new Random();
            int numberToGuess = random.nextInt(100) + 1; // 1 から 100 までの乱数
            Scanner scanner = new Scanner(System.in);
            int guess;
            int attempts = 0;
    
            System.out.println("I'm thinking of a number between 1 and 100. Can you guess it?");
    
            // TODO: ここにwhileループを追加して、当てゲームを実装します
    
            scanner.close();
        }
    }

    このコードは、プレイヤーが当てるための乱数と、プレイヤーの入力を読み取るためのスキャナを設定します。

  2. TODO コメントをこの while ループに置き換えます。

    while (true) {
        System.out.print("Enter your guess: ");
        guess = scanner.nextInt();
        attempts++;
    
        if (guess < numberToGuess) {
            System.out.println("Too low! Try again.");
        } else if (guess > numberToGuess) {
            System.out.println("Too high! Try again.");
        } else {
            System.out.println("Congratulations! You guessed the number in " + attempts + " attempts.");
            break;
        }
    }

    これを解説しましょう。

    • while (true)は無限ループを作成します。停止するまでずっと続きます。
    • ループ内では、予想を求めて試行回数を増やします。
    • if-else 文を使って、予想が低すぎる、高すぎる、正解かどうかをチェックします。
    • 予想が正解なら、おめでとうのメッセージを表示してbreakを使ってループを抜けます。
  3. ファイルを保存します。

  4. プログラムをコンパイルします。

    javac ~/project/GuessTheNumber.java
  5. プログラムを実行します。

    java -cp ~/project GuessTheNumber
GuessTheNumber program output
  1. 今、ゲームを始めましょう!正解するまで数字を入力し続けます。プログラムは、高すぎるか低すぎるかを教えてくれます。

この while ループは、正解の数字が当てられるまで続きます。何回の試行が必要になるかわからないので、ここで while ループが最適です。

制御構造の組み合わせ

最後のチャレンジとして、if-else 文、for ループ、while ループを組み合わせて、素数を見つけるプログラムを作成しましょう!

  1. WebIDE でPrimeNumberFinder.javaファイルを開きます。こうなっています。

    import java.util.Scanner;
    
    public class PrimeNumberFinder {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            int count = 0;
            int number = 2;
    
            System.out.print("How many prime numbers do you want to find? ");
            int maxPrimes = scanner.nextInt();
    
            System.out.println("First " + maxPrimes + " prime numbers:");
    
            // TODO: ここに素数を見つけるロジックを実装します
    
            scanner.close();
        }
    }
  2. TODO コメントをこのコードに置き換えます。

    while (count < maxPrimes) {
        boolean isPrime = true;
    
        for (int i = 2; i <= Math.sqrt(number); i++) {
            if (number % i == 0) {
                isPrime = false;
                break;
            }
        }
    
        if (isPrime) {
            System.out.print(number + " ");
            count++;
        }
    
        number++;
    }

    これは複雑に見えますが、解説しましょう。

    • 必要な数だけ素数を見つけるまで while ループを使って続けます。
    • 各数字に対して、それが素数かどうかを確認するために for ループを使います。
    • Math.sqrt(number)を最適化として使っています。数字の平方根までしか確認する必要はありません。
    • 約数を見つけた場合、その数字は素数ではないことがわかりますので、isPrimeを false に設定して内側のループを中断します。
    • for ループの後でisPrimeがまだ true の場合、その数字を表示してカウントを増やします。
    • 最後に常にnumberを増やして次の数字に移ります。
  3. ファイルを保存します。

  4. プログラムをコンパイルします。

    javac ~/project/PrimeNumberFinder.java
  5. プログラムを実行します。

    java -cp ~/project PrimeNumberFinder
  6. プロンプトが表示されたら、素数をいくつ見つけるかの数字(たとえば 10)を入力します。以下のような出力が表示されるはずです。

    How many prime numbers do you want to find? 10
    First 10 prime numbers:
    2 3 5 7 11 13 17 19 23 29

このプログラムは、異なる制御構造を組み合わせると Java がどれほど強力であるかを示しています。これで、決定を下し、アクションを繰り返し、複雑な問題を解決できるプログラムを作成できるようになりました!

まとめ

素晴らしい仕事です!この実験では、Java プログラミングにおけるいくつかの最も重要な概念をマスターしました。

  1. if-else 文:天気アドバイザープログラムで決定を下すために使用しました。
  2. for ループ:掛け算表を作成し、特定の回数だけアクションを繰り返すために使用しました。
  3. while ループ:当てゲームで条件が満たされるまでアクションを繰り返すために使用しました。
  4. 制御構造の組み合わせ:素数を見つけるプログラムを作成するためにすべてをまとめました。

これらの制御フロー構造は、複雑なプログラムの基本要素です。これらを使って、決定を下し、アクションを繰り返し、複雑な問題を解決するプログラムを作成できます。

覚えておいてください、練習が磨きになります。これらのプログラムを修正したり、これらの概念を使って新しいプログラムを作成したりしてみてください。曜日ごとに異なるアドバイスを与えるプログラムを作れますか?または 100 までの任意の数字の掛け算表を表示するプログラムを作れますか?可能性は無限です!

コーディングを続け、学びを続け、最も重要なことは、楽しんでください!あなたはすでに Java エキスパートになる道のりを歩んでいます。