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クラス

public class Pool {
	private static final double MAX=600.0d;
	private double water;
	public Pool(){
		this.water=0.0;
	}
	public void feedWater(double water){
		double feed=this.water+water > MAX ? MAX-this.water:water;
		this.water += feed;
		System.out.printf("%.1f立方メートル給水しました。%n",feed);
		
	}
	public void drainWater(double water){
		double drain = this.water-water > 0 ? water : this.water;
		this.water -= drain;
		System.out.printf("%.1f立方メートル排水しました。%n", drain);
		
	}
	public void display(){
		System.out.printf("現在の水量は%.1f立方メートルです。%n", this.water);
	}
}

PoolAppクラス

import java.util.Scanner;
public class PoolApp {
	public static void main(String[] args) {
		Pool pool=new Pool();
		Scanner s=new Scanner(System.in);
		while(true){
			System.out.print("1. 給水 / 2. 排水 / 3. 表示 / 4. 終了>");
			int select=s.nextInt();
			switch(select){
			case 1:
				double water;
				do{
					System.out.print("給水する水量を入力して下さい >");
					water=s.nextDouble();
					if(water<0){
						System.out.println("[給水量は正の値をいれてください。]");
					}
				}while(water < 0);
				pool.feedWater(water);
				break;
			case 2:
				do{
					System.out.print("排水する水量を入力して下さい >");
					water=s.nextDouble();
					if(water<0){
						System.out.println("[排水量は正の値をいれてください。]");
					}
				}while(water < 0);
				pool.drainWater(water);
				break;
			case 3:
				pool.display();
				break;
			default:
				System.out.println("アプリケーションを終了します。");
				s.close();
				System.exit(0);
			}
		}
	}
}

コメント

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