Javaの学習を始めて23日くらいの人のための問題集

Java

オブジェクト指向基本問題。

Q1
プールを表すクラスPoolとそれを実行するアプリケーションクラスを作り
各操作ができるプログラムを作成する

<フィールド変数>
・現在の水量 -water : double

<コンストラクタ>
public Pool()
… 水量を0.0立方メートルにしてインスタンスを生成する。

<メソッド>
public void feedWater(double water)
… 引数として渡された水量だけ給水する
  ただし満水(600.0立方メートル)を超える分は給水しない
public void drainWater(double water)
… 引数として渡された水量だけ排水する
public void display()
… 現在の水量を表示する

[実行例]

1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>3
現在の水量は0.0立方メートルです。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>1
給水する水量を入力して下さい >200
200.0立方メートル給水しました。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>1
給水する水量を入力して下さい >500
400.0立方メートル給水しました。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>2
排水する水量を入力して下さい >-200
[排水量は正の値をいれてください。]
排水する水量を入力して下さい >200
200.0立方メートル排水しました。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>2
排水する水量を入力して下さい >500
400.0立方メートル排水しました。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>3
現在の水量は0.0立方メートルです。
1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>4
アプリケーションを終了します。

Poolクラス

01public class Pool {
02  private static final double MAX=600.0d;
03  private double water;
04  public Pool(){
05    this.water=0.0;
06  }
07  public void feedWater(double water){
08    double feed=this.water+water > MAX ? MAX-this.water:water;
09    this.water += feed;
10    System.out.printf("%.1f立方メートル給水しました。%n",feed);
11     
12  }
13  public void drainWater(double water){
14    double drain = this.water-water > 0 ? water : this.water;
15    this.water -= drain;
16    System.out.printf("%.1f立方メートル排水しました。%n", drain);
17     
18  }
19  public void display(){
20    System.out.printf("現在の水量は%.1f立方メートルです。%n", this.water);
21  }
22}

PoolAppクラス

01import java.util.Scanner;
02public class PoolApp {
03  public static void main(String[] args) {
04    Pool pool=new Pool();
05    Scanner s=new Scanner(System.in);
06    while(true){
07      System.out.print("1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>");
08      int select=s.nextInt();
09      switch(select){
10      case 1:
11        double water;
12        do{
13          System.out.print("給水する水量を入力して下さい >");
14          water=s.nextDouble();
15          if(water<0){
16            System.out.println("[給水量は正の値をいれてください。]");
17          }
18        }while(water < 0);
19        pool.feedWater(water);
20        break;
21      case 2:
22        do{
23          System.out.print("排水する水量を入力して下さい >");
24          water=s.nextDouble();
25          if(water<0){
26            System.out.println("[排水量は正の値をいれてください。]");
27          }
28        }while(water < 0);
29        pool.drainWater(water);
30        break;
31      case 3:
32        pool.display();
33        break;
34      default:
35        System.out.println("アプリケーションを終了します。");
36        s.close();
37        System.exit(0);
38      }
39    }
40  }
41}

コメント

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