オブジェクト指向基本問題。
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
public class CopyMachine { int paper; public CopyMachine(int sheet){ this.paper=sheet > 0 ? sheet : 0; } public void feedPaper(int sheet){ this.paper+=sheet; System.out.printf("%d枚給紙しました。%n",sheet); } public void copy(int sheet){ int num=this.paper > sheet ? sheet : this.paper; this.paper-=num; System.out.printf("%d枚コピーしました。 %n",num); } public void display(){ System.out.printf("コピー可能な枚数は%d枚です。%n",this.paper); } }
CopyMachineApp
public class CopyMachineApp { public static void main(String[] args) { System.out.print("最初に給紙する枚数を入力して下さい >"); Scanner s=new Scanner(System.in); int num=s.nextInt(); CopyMachine cm=new CopyMachine(num); while(true){ System.out.print("1. 給紙 / 2. コピー / 3. 表示 / 4. 終了>"); int select=s.nextInt(); switch(select){ case 1: System.out.print("給紙する枚数を入力して下さい >"); num=s.nextInt(); cm.feedPaper(num); break; case 2: System.out.print("コピーする枚数を入力して下さい >"); num=s.nextInt(); cm.copy(num); break; case 3: cm.display(); break; default: System.out.println("アプリケーションを終了します。"); return; } } } }
コメント