オブジェクト指向基本問題。
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);
}
}

コメント