エンジニア成長日記 swaponQ

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

新・明解 Java 入門 演習 10-3 解答

Hello, Terminal!swaponQです!

今回は演習 10-3 に取り組んでいこうと思います。

  • 演習 10-3

二値/三値/配列の最小値を求めるメソッドや最大値を求めるメソッドを集めたユーティリティクラスMinMaxを作成せよ。

・MinMax.java

class MinMax {

  public static double getMx3(double x, double y, double z) {
    double M = Math.max(x,y);
    double Max = Math.max(M,z);
    return Max;
  }

  public static double getMn3(double x, double y, double z) {
    double m = Math.min(x,y);
    double min = Math.min(m,z);
    return min;
  }

  public static double getMx2(double x, double y) {
    double M = Math.max(x,y);
    return M;
  }

  public static double getMn2(double x, double y) {
    double m = Math.min(x,y);
    return m;
  }

  public static double getMxMat(double[] a) {
    double max = a[0];
    for (int i = 0; i < a.length; i++)
    max = Math.max(max,a[i]);
    return max;
  }

  public static double getMnMat(double[] a) {
    double min = a[0];
    for (int i = 0; i < a.length; i++)
    min = Math.min(min,a[i]);
    return min;
  }
}

・MinMaxTester.java

import java.util.Scanner;

public class MinMaxTester {
  public static void main(String[] args) {

    Scanner stdIn = new Scanner(System.in);

    System.out.print("二値...1/三値...2/配列...3:");
    int choice = stdIn.nextInt();

    if (choice == 1) {
      System.out.print("xの値:");
      double x = stdIn.nextDouble();
      System.out.print("yの値:");
      double y = stdIn.nextDouble();
      System.out.println("最大値は" + MinMax.getMx2(x,y) + "です。");
      System.out.println("最小値は" + MinMax.getMn2(x,y) + "です。");
    } else if (choice == 2) {
      System.out.print("xの値:");
      double x = stdIn.nextDouble();
      System.out.print("yの値:");
      double y = stdIn.nextDouble();
      System.out.print("zの値:");
      double z = stdIn.nextDouble();
      System.out.println("最大値は" + MinMax.getMx3(x,y,z) + "です。");
      System.out.println("最小値は" + MinMax.getMn3(x,y,z) + "です。");
    } else if (choice == 3) {
      System.out.print("配列数:");
      int n = stdIn.nextInt();
      double[] a = new double[n];
      System.out.println("配列数" + n +"の数の大小を求めます。");
      for (int i = 0; i < n; i++) {
        System.out.print("a[" + i + "]:");
        a[i] = stdIn.nextDouble();
      }
      System.out.println("最大値は" + MinMax.getMxMat(a) + "です。");
      System.out.println("最小値は" + MinMax.getMnMat(a) + "です。");
    }
  }
}

今回は以上です。お疲れ様でした!
次回は演習 10-4 です。

Goodbye, Terminal… swaponQでした!