じゃないJava-06繰り返し

ワーク&演習

■ワーク1-5回繰り返すには?

5回処理を繰り返すように、1箇所だけ値を変えてみましょう。

for (int i = 0; i < 3; i = i + 1) {
    System.out.println("ねぇ");
}

■ワーク2:★を4回出力するfor文

For01クラスに、★の画面出力を4回繰り返すfor文を追記してください。

★は、「ほし」を変換すると出てくるはずです。
★を入力できない場合、このテキストからコピペするか、ひらがなの「ほし」でかまいません。

■ワーク3:iを利用して、何回目の繰り返しなのか出力する

For01クラスの★を4回出力する繰り返し処理について
・「i個目の★」と出力するよう、追記してください。(iは変数iの値)

実行結果

0個目の★
1個目の★
2個目の★
3個目の★

■演習1-シンプルな繰り返し

mainメソッドにて以下の処理を行うForp01 クラスを作ってください。

・「こんにちは」と8回画面出力

■演習1-回答例

package lesson06for;

public class Forp01 {
    public static void main(String[] args) {
        // 8回繰り返し「こんにちは」と出力する
        for (int i = 0; i < 8; i++) {
            System.out.println("こんにちは");
        }
    }
}

■演習2-iを使った繰り返し

mainメソッドにて以下の処理を行うForp02 クラスを作ってください。

・「今i回目の繰り返しです」と画面出力を3回繰り返す
(iは、for文の繰り返しのカウント用に定義した変数iです)

■演習2-回答例

package lesson06for;

public class Forp02 {
    public static void main(String[] args) {
        // 3回繰り返し、各繰り返しでカウントを表示する
        for (int i = 0; i < 3; i++) {
            System.out.println("今" + i + "回目の繰り返しです");
        }
    }
}

■演習3-入力値の数だけ繰り返し

mainメソッドにて以下の処理を行うForp03 クラスを作ってください。

・「何回ねぇと言いますか?」と画面出力し、入力値を受け付ける
・入力値の数だけ「ねぇ」と画面出力を繰り返す


ヒント:
・3回繰り返したい場合、for (int i = 0; i < 3; i++)と記述します。変数の値分繰り返したい場合は、i<3ではなく・・?(続きは考えてみてください)
・入力値は文字型のため、数値変換する必要があります。

■演習3回答例

package lesson06for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Forp03 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        // ユーザーに入力を促す
        System.out.println("何回ねぇと言いますか?");
        String input = reader.readLine(); // 入力値を受け取る

        // 入力値を整数に変換
        int count = Integer.parseInt(input);

        // 指定された回数だけ繰り返す
        for (int i = 0; i < count; i++) {
            System.out.println("ねぇ");
        }
    }
}

■ワーク4:配列の中身をfor文で

For02クラスについて、配列fruitsの要素を、for文を使って画面出力するよう、★の箇所を適切な記述に変更してください。i < ★については、3ではなく配列の要素数が変わったとしても対応できる形で記述すること。

for (int i = 0; i < ★; i++) {			System.out.println(fruits[★]);		
}

■ワーク5:繰り返し条件をWhile文に書く

for文と同様、「やほぅ」と画面出力を3回繰り返す処理を、while文で作成します。

まずは、while文のconditionの部分に、繰り返し条件を記載してください。
for文の()内に書いた、以下3つのいずれかです。
1.int i = 0
2.i < 3
3.i++

                for (int i = 0; i < 3; i++) {
			System.out.println("やほぅ");
		}
		
		while (condition) {
			
		}

■ワーク6:int i =0をどこに書くか?

mainメソッド内に、int i = 0;を追記してください。

//		int i = 0をどこに書けば良いか?
		while (i < 3) {
			System.out.println("やほぅ");
		}

■ワーク7:i++をどこに書くか?

i++;を以下のどこかに追記して、無限ループが起こらないようにしましょう。

	int i = 0;
	while (i < 3) {
		System.out.println("やほぅ");
	}

■演習4:while文を使った繰り返し①

mainメソッドにて以下の処理を行うForp04 クラスを作ってください。
繰り返しにはwhile文を使うこと。

・「おっす」と5回画面出力

ヒント:
・回数を数えるための変数を、while文よりも先に定義する必要があります。
・回数を数えるための変数の値を変化させる処理を、while文の中に書かないと無限ループしてしまいます。

演習4回答例

public class Forp04 {
    public static void main(String[] args) {
        int count = 0; // 回数を数えるための変数

        while (count < 5) {
            System.out.println("おっす");
            count++; // 回数を数えるための変数の値を増やす
        }
    }
}

■演習5(応用):While文を使った繰り返し②

mainメソッドにて以下の処理を行うForp05 クラスを作ってください。
繰り返しにはwhile文を使うこと。

・選択肢の値が1ではない間、以下の1~2を繰り返す

1.「前を歩いている女の子がハンカチを落としたようだ」と画面出力
2.「1:拾う 2:拾わない」と画面出力し、入力を受けつける

・繰り返し終了後、「ねぇ」と画面出力

ヒント:
・reader、変数はwhile文よりも前に書きます。

        //繰り返し内で使うものをwhile文よりも前で定義
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int choice = 0;
        String input;
 
        while (){
            //以降、繰り返し


・while文の繰り返し条件は「入力値が1ではない場合」です。ではないは、!=で示します。
・繰り返しが終了した後の処理は、while文の外(}よりも後ろに書きます。

・(大事なことなのでもう一度)繰り返すのは、以下の1と2の処理です。繰り返す処理を、while文内に記載します。
1.「前を歩いている女の子がハンカチを落としたようだ」と画面出力
2.「1:拾う 2:拾わない」と画面出力し、入力を受けつける

■演習5回答例

package lesson06for;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Forp05 {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int choice = 0;
String input;

while (choice != 1) {
System.out.println("前を歩いている女の子がハンカチを落としたようだ");
System.out.println("1:拾う 2:拾わない");

input = reader.readLine();
choice = Integer.parseInt(input);
}

System.out.println("ねぇ");
}
}

■演習6(応用):while文を使った対戦RPG

mainメソッドにて以下の処理を行うForp06 クラスを作ってください。

・ボスのHPを100で初期化する(その他必要なものを自身で考え、定義すること)
・ボスのHPが0よりも大きい間以下1~4を繰り返す
1.「何をする?1:闘う2:何もしない」を画面出力
2.入力値を受け付ける
3.1が入力された場合、「攻撃!ボスへ20のダメージ」と画面出力し、ボスのHPを20減らす
4.ボスの残りHP「ボスの残りHP:ボスのHPを管理する変数の値 」の形式で画面出力する

・繰り返しが終了したら「ボスを倒した!」と画面出力する

ヒント
・1の場合のみ特定の処理を行うには、条件分岐です。繰り返し処理の中にも、条件分岐を記載できます。

■演習6回答例

package lesson06for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Forp06 {

	public static void main(String[] args) throws NumberFormatException, IOException {

		int bossHp = 100;
		int choice = 0;
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

		while (bossHp > 0) {
			System.out.println("何をする?1:攻撃 2:何もしない");
			choice = Integer.parseInt(reader.readLine());

			if (choice == 1) {
				System.out.println("攻撃!ボスへ20のダメージ");
				bossHp = bossHp - 20;
			}
			System.out.println("ボスの残りHP:" + bossHp);
		}
		System.out.println("ボスを倒した!");

	}

}

■演習7:continueとbreakの基礎

mainメソッドにて以下の実行結果となるForp07 クラスを作ってください。

ヒント
・iが1の時だけ、画面出力を行わないようにします。
・その回の繰り返し処理を中断して、次の繰り返しを実行するにはcontinueもしくはbreakを使います。

演習7回答例

package lesson06for;

public class Forp07 {

	public static void main(String[] args) {
		for (int i = 0; i < 4; i++) {
			if (i==1) {
				continue;
			}
			System.out.println(i+"回目のやぁ");
			
		}

	}

}

■ワーク8:間違った選択肢を選んだ場合に、ループの初めに戻る

3以外が入力された場合に、ループ(繰り返し)の初めに戻るよう、★の箇所に処理を追記してください。

		while (true) {
			System.out.println("朝目覚めた。何をする?");
			System.out.println("1:二度寝 2:YouTube 3:学校へ行く");
			input = reader.readLine();
			choice = Integer.parseInt(input);
			//3以外の場合に、ループの最初に戻す処理
			★
			//3を選んだ場合、繰り返し処理の続き
			System.out.println("学校に着いた");
			
		}

*正しい選択肢3入力時も、「学校に着いた」が出力された後、再びループします。現状はそれでOKです。

ヒント:
・「3以外の場合」は、以下のように記述します。

		// 3以外の場合に、ループの最初に戻す処理
			if (choice != 3) {
				//ループの最初に戻る処理
			} 

問題集

■1.mainメソッドにて以下の処理を実行するFord01クラスを作成してください。

playerHpの初期値:100
playerHpが0より大きい場合、以下1~4を繰り返す
1.「残りのHP:playerHP」を画面出力
2.「やる気がでないので何もしなかった」を画面出力
3.「ボスからの攻撃!30のダメージ」を画面出力
4.playerHpを-30
・繰り返し終了後「HPが0になった。GameOver」を画面出力

■2.mainメソッドにて以下の処理を実行するFord02クラスを作成してください。

bossHpの初期値:200
bossHpが0より大きい場合、以下を繰り返す
1.「ボスの残りHP:bossHp」を画面出力
2.「攻撃!20のダメージ」を画面出力
3.bossHpを-20
・繰り返し終了後「ボスを倒した!」を画面出力

■3.mainメソッドにて以下の処理を実行するFord03クラスを作成してください。

bossHpの初期値:200
playerHpの初期値:100

bossHpが0より大きいかつ、playerHpが0より大きい場合、以下1~6を繰り返す

1.「ボスの残りHP:bossHp」と画面出力(以降、「」は画面出力の意)
2.「残りのHP:playerHP
3.「攻撃!20のダメージ」
4.bossHpを-20

(以下、bossHpが0より大きい場合のみ)
5.「ボスからの攻撃!30のダメージ」
6.playerHpを-30

・繰り返し終了後
playerHpが0以下の場合:
「やられた!GameOver」
bossHpが0以下の場合:
「CLEAR!ボスを倒した!」

★追加問題
ボスを倒せるように任意の値(hp、攻撃力など)を調整してください。

■4.mainメソッドにて以下の処理を実行するFord04クラスを作成してください。

・以下、シーンごとに選択肢を入力する。正しい選択肢以外を選んだ場合、シーン1から繰り返す。
・誤った選択肢を選んだ場合のメッセージは、各自考えること。
・「」内の記述はコンソールへの画面出力を意味する。

シーン1:
「休み時間だ。何をする?」
「1:予習 2:復習 3:廊下に出る」
(3を選ばなかった場合、シーン1に戻る)

シーン2:
「廊下に出た。何をする?」
「1:教室に戻る 2:走り出す」
(2を選ばなかった場合、シーン1に戻る)

シーン3:
「どーん!!誰かとぶつかったようだ。」
「1:逃げる 2:謝罪する」
(2を選ばなかった場合、「教室に逃げ込んだ!」シーン1に戻る)

シーン3で2を選んだ場合:
「ごめん!」
「謎の女:いたたた・・」
「・・・・・(続く)」
「GameCLEAR!次のステージ「初めての会話」がオープンしました」
ループを抜ける

問題集回答例

1.mainメソッドにて以下の処理を実行するFord01クラスを作成してください。

playerHpの初期値:100
playerHpが0より大きい場合、以下1~4を繰り返す
1.「残りのHP:playerHP」を画面出力
2.「やる気がでないので何もしなかった」を画面出力
3.「ボスからの攻撃!30のダメージ」を画面出力
4.playerHpを-30
・繰り返し終了後「HPが0になった。GameOver」を画面出力

package lesson06for;

public class Ford01 {
    public static void main(String[] args) {
        int playerHp = 100; // playerHpの初期値を100に設定

        // playerHpが0より大きい場合、繰り返す
        while (playerHp > 0) {
            System.out.println("残りのHP: " + playerHp); // 残りのHPを画面出力
            System.out.println("やる気がでないので何もしなかった"); // 行動しないことを画面出力

            // ボスからの攻撃を受ける
            System.out.println("ボスからの攻撃! 30のダメージ");
            playerHp -= 30; // playerHpを30減らす
        }

        // 繰り返し終了後、GameOverを画面出力
        System.out.println("HPが0になった。GameOver");
    }
}

2.mainメソッドにて以下の処理を実行するFord02クラスを作成してください。

bossHpの初期値:200
bossHpが0より大きい場合、以下を繰り返す
1.「ボスの残りHP:bossHp」を画面出力
2.「攻撃!20のダメージ」を画面出力
3.bossHpを-20
・繰り返し終了後「ボスを倒した!」を画面出力

package lesson06for;

public class Ford02 {
    public static void main(String[] args) {
        int bossHp = 200; // ボスのHPの初期値を200に設定

        // bossHpが0より大きい場合、繰り返し処理を行う
        while (bossHp > 0) {
            System.out.println("ボスの残りHP: " + bossHp); // ボスの残りHPを画面出力

            // 攻撃を行い、ダメージを適用する
            System.out.println("攻撃! 20のダメージ");
            bossHp -= 20; // bossHpを20減らす
        }

        // 繰り返し処理が終了したら、ボスが倒されたことを画面出力する
        System.out.println("ボスを倒した!");
    }
}

3.mainメソッドにて以下の処理を実行するFord03クラスを作成してください。

bossHpの初期値:200
playerHpの初期値:100

bossHpが0より大きいかつ、playerHpが0より大きい場合、以下を繰り返す

1.「ボスの残りHP:bossHp」と画面出力(以降、「」は画面出力の意)
2.「残りのHP:playerHP
3.「攻撃!20のダメージ」
4.bossHpを-20

(以下、bossHpが0より大きい場合)
5.「ボスからの攻撃!30のダメージ」
6.playerHpを-30

・繰り返し終了後
playerHpが0以下の場合:
「やられた!GameOver」
bossHpが0以下の場合:
「CLEAR!ボスを倒した!」

public class Ford03 {
    public static void main(String[] args) {
        int bossHp = 200; // ボスのHPの初期値を200に設定
        int playerHp = 100; // プレイヤーのHPの初期値を100に設定

        // bossHpとplayerHpが両方とも0より大きい場合、繰り返し処理を行う
        while (bossHp > 0 && playerHp > 0) {
            System.out.println("ボスの残りHP: " + bossHp); // ボスの残りHPを画面出力
            System.out.println("残りのHP: " + playerHp); // プレイヤーの残りHPを画面出力

            // プレイヤーによる攻撃
            System.out.println("攻撃! 20のダメージ");
            bossHp -= 20; // ボスのHPを20減らす

            if (bossHp > 0) {
                // ボスによる反撃
                System.out.println("ボスからの攻撃! 30のダメージ");
                playerHp -= 30; // プレイヤーのHPを30減らす
            }
        }

        // 繰り返し処理が終了後、ゲームの結果を画面出力
        if (playerHp <= 0) {
            System.out.println("やられた! GameOver");
        } else if (bossHp <= 0) {
            System.out.println("CLEAR! ボスを倒した!");
        }
    }
}

★追加問題
ボスを倒せるように任意の値(hp、攻撃力など)を調整してください。

・ボスのHPを60以下にする
・プレイヤーのHPを300より大きくする

など、いずれにせよボスが倒せれば正解です。

4.mainメソッドにて以下の処理を実行するFord04クラスを作成してください。

・以下、シーンごとに選択肢を入力する。正しい選択肢以外を選んだ場合、シーン1から繰り返す。
・誤った選択肢を選んだ場合のメッセージは、各自考えること。
・「」内の記述はコンソールへの画面出力を意味する。

シーン1:
「休み時間だ。何をする?」
「1:予習 2:復習 3:廊下に出る」
(3を選ばなかった場合、シーン1に戻る)

シーン2:
「廊下に出た。何をする?」
「1:教室に戻る 2:走り出す」
(2を選ばなかった場合、シーン1に戻る)

シーン3:
「どーん!!誰かとぶつかったようだ。」
「1:逃げる 2:謝罪する」
(2を選ばなかった場合、「教室に逃げ込んだ!」シーン1に戻る)

シーン3で2を選んだ場合:
「ごめん!」
「謎の女:いたたた・・」
「・・・・・(続く)」
「GameCLEAR!次のステージ「初めての会話」がオープンしました」
ループを抜ける

package lesson06for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Ford04 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        while (true) {
            // シーン1
            System.out.println("休み時間だ。何をする?");
            System.out.println("1:予習 2:復習 3:廊下に出る");
            int choice = Integer.parseInt(reader.readLine());

            if (choice != 3) {
            	System.out.println("休憩が終わり、授業が始まった。");
                continue;
            }

            // シーン2
            System.out.println("廊下に出た。何をする?");
            System.out.println("1:教室に戻る 2:走り出す");
            choice = Integer.parseInt(reader.readLine());

            if (choice != 2) {
            	System.out.println("教室に戻った");
                continue;
            }

            // シーン3
            System.out.println("どーん!! 誰かとぶつかったようだ。");
            System.out.println("1:逃げる 2:謝罪する");
            choice = Integer.parseInt(reader.readLine());

            if (choice != 2) {
                System.out.println("慌てて教室に逃げ込んだ!");
                continue;
            }

            // シーン3で選択肢2を選んだ場合
            System.out.println("ごめん!");
            System.out.println("謎の女: いたたた・・");
            System.out.println("・・・・・(続く)");
            System.out.println("GameCLEAR! 次のステージ「初めての会話」がオープンしました");
            break;
        }
    }
}

タイトルとURLをコピーしました