オブジェクト指向基本問題。
Q1
コピー機を表すクラスCopyMachineを作成し、
各操作ができるプログラムを作成する。
<フィールド変数>
・コピー可能な枚数 … -paper : int
<コンストラクタ>
public CopyMachine(int sheet)
… 最初に給紙する枚数を指定する。
枚数がマイナスの場合は0枚に設定する
<一般メソッド>
public void feedPaper(int sheet)
… 引数として渡された枚数だけ給紙する
public void copy(int sheet)
… 引数として渡された枚数をコピーする
すべてをコピーできない場合は可能な枚数だけコピーする
public void display()
… コピー可能な枚数を表示する
2.
CopyMachineAppクラスにおいて,実行例となるように処理を記述せよ。
[実行例]
最初に給紙する枚数を入力して下さい >20 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>3 コピー可能な枚数は20枚です。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>1 給紙する枚数を入力して下さい >10 10枚給紙しました。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>3 コピー可能な枚数は30枚です。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>2 コピーする枚数を入力して下さい >15 15枚コピーしました。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>3 コピー可能な枚数は15枚です。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>2 コピーする枚数を入力して下さい >30 15枚コピーしました。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>3 コピー可能な枚数は0枚です。 1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>4 アプリケーションを終了します。
CopyMachine
import java.util.*; public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("最初に給紙する枚数を入力してください>>"); int paper = sc.nextInt(); CopyMachine cm = new CopyMachine(paper); while(true){ System.out.print("1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>>"); int select = sc.nextInt(); switch(select){ case 1 -> { System.out.print("給紙する枚数を入力してください>>"); paper = sc.nextInt(); cm.feedPaper(paper); } case 2 -> { System.out.print("コピーする枚数を入力してください>>"); paper = sc.nextInt(); cm.copy(paper); } case 3 -> cm.display(); default ->{ System.out.println("アプリケーションを終了します"); return; } } } } } class CopyMachine{ int paper; public CopyMachine(int sheet){ this.paper = sheet > 0 ? sheet:0; } public void feedPaper(int sheet){ System.out.printf("%d枚給紙しました%n",sheet); this.paper += sheet; } public void copy(int sheet){ int copied = Math.min(sheet,this.paper); System.out.printf("%d枚コピーしました%n",copied); this.paper -= copied; } public void display(){ System.out.printf("コピー可能な枚数は%d枚です%n",this.paper); } }
コメント