エンジニア成長日記 swaponQ

コンピュータサイエンス専攻の一般人のブログです。

新・明解 Java 入門 演習 4-25, 4-26, 4-27 解答

Hello, Terminal!swaponQです!

前回に引き続き、今回は演習 4-25, 4-26, 4-27 に取り組んでいこうと思います。

  • 演習 4-25

合計だけなく平均も求めるようにList4-17およびList4-18のプログラムを書きかえよ。

ex04_25_1.java

import java.util.Scanner;

class ex04_25_1 {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		System.out.println("整数を計算します。");
		System.out.print("何個計算しますか:");
		int n = stdIn.nextInt();
		int sum = 0;
		int count = 0;
		for (int i = 0; i < n; i++) {
			System.out.print("整数(0で終了):");
			int t = stdIn.nextInt();
			if (t == 0) {
				break;
			}
			sum += t;
			count++;
		}
		double ave = ((double) sum / count);
		System.out.println("合計は" + sum + "です。\n平均は" + ave + "です。");
	}
}

実行結果

整数を計算します。
何個計算しますか:2
整数(0で終了):15
整数(0で終了):37
合計は52です。
平均は26.0です。


ex04_25_2.java

import java.util.Scanner;

class ex04_25_2 {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		System.out.println("整数を計算します。");
		System.out.print("何個計算しますか:");
		int n = stdIn.nextInt();
		int sum = 0;
		int count = 0;
		for (int i = 0; i < n; i++) {
			System.out.print("整数:");
			int t = stdIn.nextInt();
			if (sum + t > 1000) {
				System.out.println("合計が1000を超えました。");
				System.out.println("最後の数値は無視します。");
				break;
			}
			sum += t;
			count++;
		}
		double ave = ((double) sum / count);
		System.out.println("合計は" + sum + "です。\n平均は" + ave + "です。");
	}
}

実行結果

整数を計算します。
何個計算しますか:5
整数:127
整数:534
整数:392
合計が1000を超えました。
最後の数値は無視します。
合計は661です。
平均は330.5です。
  • 演習 4-26

合計だけでなく平均も求めるようにList4-19のプログラムを書きかえよ。なお、読み込んだ負の数の個数は平均を求める際の分母から除外すること。

ex04_26.java

import java.util.Scanner;

class ex04_26 {
	public static void main(String[] args) {
		Scanner stdIn = new Scanner(System.in);
		System.out.println("整数を加算します。");
		System.out.print("何個加算しますか:");
		int n = stdIn.nextInt();
		int sum = 0;
		int count = 0;
		for (int i = 0; i < n; i++) {
			System.out.print("整数:");
			int t = stdIn.nextInt();
			if (t < 0) {
				System.out.println("負の数は加算しません。");
				continue;
			}
			sum += t;
			count++;
		}
		double ave = (double) sum / count;
		System.out.println("合計は" + sum + "です。\n平均は" + ave + "です。");

	}
}

実行結果

整数を加算します。
何個加算しますか:3
整数:2
整数:-5
負の数は加算しません。
整数:13
合計は15です。
平均は7.5です。
  • 演習 4-27

List4-3の数当てゲームのプレイヤーが入力できる回数に制限を設けたプログラムを作成せよ。
制限回数内に当てられなかった場合は、正解を表示してゲームを終了すること。

ex04_27.java

import java.util.Random;
import java.util.Scanner;

class ex04_27 {
	public static void main(String[] args) {
		Random rand = new Random();
		Scanner stdIn = new Scanner(System.in);
		final int limit = 5;
		int no = rand.nextInt(100);
		System.out.println("数当てゲーム開始!!");
		System.out.println("0~99の数を" + limit + "回以内に当てて下さい。");
		int x;
		int count = 0;
		Game:
      while (true) {
        if (count == limit) {
          System.out.println("正解は" + no + "でした。\nゲームを終了します。");
          break Game;
        }
        System.out.print("いくつかな?:");
  			x = stdIn.nextInt();
  			count++;
  			if (x > no) {
  				if (count != limit) {
  					System.out.println("もっと小さな数だよ。");
  				}
  			} else if (x < no) {
  				if (count != limit) {
  					System.out.println("もっと大きな数だよ。");
  				}
  			} else {
  				System.out.println("正解です。");
  				break Game;
  			}
      }
  }
}

実行結果

数当てゲーム開始!!
0~99の数を5回で当てて下さい。
いくつかな?:50
もっと大きな数だよ。
いくつかな?:75
もっと大きな数だよ。
いくつかな?:90
もっと大きな数だよ。
いくつかな?:95
もっと小さな数だよ。
いくつかな?:93
正解は94でした。
ゲームを終了します。


以上で「第4章:プログラムの流れの繰り返し」の演習は全て終了です。
とてもとても長い道のりでしたが、本当にお疲れ様でした!
次回は「第5章:基本型と演算」です。

Goodbye, Terminal… swaponQでした!