Java(オブジェクト指向2)

Java

Q.
1.以下のフィールドを持つPencilクラスを作成せよ。なおペンの長さの初期値は5とする。
フィールド
color:色を表す
penLength:長さを表す

2.実行例を実現できるようにコンストラクタやメソッドを追記する。

3.mainメソッドを持つPencilAppクラスを作成し以下の処理を実現せよ。
鉛筆の長さが3の場合は+++>とプラス記号3つと>で表すこととする。

[実行例]
何色の鉛筆を作りますか>:赤
操作を入力してください1…書く,2…情報を見る,3…終了>2
色:赤
+++++>
操作を入力してください1…書く,2…情報を見る,3…終了>1
赤で書いた!
操作を入力してください1…書く,2…情報を見る,3…終了>2
色:赤
++++>
操作を入力してください1…書く,2…情報を見る,3…終了>1
赤で書いた!
操作を入力してください1…書く,2…情報を見る,3…終了>1
赤で書いた!
操作を入力してください1…書く,2…情報を見る,3…終了>1
赤で書いた!
操作を入力してください1…書く,2…情報を見る,3…終了>2
色:赤
+>
操作を入力してください1…書く,2…情報を見る,3…終了>1
赤で書いた!
操作を入力してください1…書く,2…情報を見る,3…終了>2
色:赤
>
操作を入力してください1…書く,2…情報を見る,3…終了>1
もう書けません!
操作を入力してください1…書く,2…情報を見る,3…終了>3
アプリケーションを終了します。

[実行例]
●Pencilクラス

01public class Pencil {
02  public String color;
03  public int penLength=5;
04   
05  public Pencil(String color){
06    this.color=color;
07  }
08   
09  public void write(){
10    if(this.penLength <=0){
11      System.out.println("もう書けません!");
12      return;
13    }
14    System.out.println(this.color+"で書いた!");
15    this.penLength--;
16  }
17  public void showStatus(){
18    System.out.println("色:"+this.color);
19    for(int i=0;i<this.penLength;i++){
20      System.out.print('+');
21    }
22    System.out.println('>');
23  }
24}

●PencilAppクラス

01import java.util.Scanner;
02 
03public class PencilApp {
04 
05  public static void main(String[] args) {
06    Scanner scan=new Scanner(System.in);
07    System.out.print("何色の鉛筆を作りますか>:");
08    String color=scan.next();
09    Pencil pen=new Pencil(color);
10    while(true){
11      System.out.print("操作を入力してください1...書く,2...情報を見る,3...終了>");
12      int select =scan.nextInt();
13      switch(select){
14      case 1:
15        pen.write();
16        break;
17      case 2:
18        pen.showStatus();
19        break;
20      default:
21        System.out.println("アプリケーションを終了します。");
22        scan.close();
23        return;
24      }
25    }
26  }
27}

Q2
Pencilクラスを用い、新しく以下のアプリケーションを作成せよ。
[実行例]
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>2
まず鉛筆をつくってください!
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
まず鉛筆を持ってください!
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>1
何色の鉛筆を作りますか>赤
赤色の鉛筆を作りました。
色:赤
+++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>1
何色の鉛筆を作りますか>青
青色の鉛筆を作りました。
色:青
+++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>2
0…赤
1…青
何番の鉛筆を持ちますか>1
青の鉛筆を持った
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
青で書いた!
色:青
++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>2
0…赤
1…青
何番の鉛筆を持ちますか>0
赤の鉛筆を持った
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
赤で書いた!
色:赤
++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>1
何色の鉛筆を作りますか>黄
黄色の鉛筆を作りました。
色:黄
+++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>2
0…赤
1…青
2…黄
何番の鉛筆を持ちますか>2
黄の鉛筆を持った
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
黄で書いた!
色:黄
++++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
黄で書いた!
色:黄
+++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
黄で書いた!
色:黄
++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
黄で書いた!
色:黄
+>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
黄で書いた!
色:黄
>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
もう書けません!
色:黄
>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>2
0…赤
1…青
2…黄
何番の鉛筆を持ちますか>0
赤の鉛筆を持った
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>3
赤で書いた!
色:赤
+++>
操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>4
アプリケーションを終了します

[解答例]

01import java.util.ArrayList;
02import java.util.Scanner;
03public class PencilApp {
04  public static void main(String[] args) {
05    Scanner scan=new Scanner(System.in);
06    ArrayList<Pencil> list=new ArrayList<>();
07    Pencil pen=null;//今もっているペン(最初はなし)
08    while(true) {
09      System.out.print("操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>");
10      int select=scan.nextInt();
11      switch(select) {
12      case 1:
13        System.out.print("何色の鉛筆を作りますか>");
14        String color=scan.next();
15        Pencil pencil=new Pencil(color);
16        list.add(pencil);
17        System.out.println(pencil.color+"色の鉛筆を作りました。");
18        pencil.showStatus();
19        break;
20      case 2:
21        if(list.size()==0) {
22          System.out.println("まず鉛筆をつくってください!");
23          break;
24        }
25        for(int i=0;i<list.size();i++) {
26          System.out.println(i+"..."+list.get(i).color);
27        }
28        System.out.print("何番の鉛筆を持ちますか>");
29        int num=scan.nextInt();
30        pen=list.get(num);
31        System.out.println(pen.color+"の鉛筆を持った");
32        break;
33      case 3:
34        if(pen==null) {
35          System.out.println("まず鉛筆を持ってください!");
36          break;
37        }
38        pen.write();
39        pen.showStatus();
40        break;
41      default:
42        System.out.println("アプリケーションを終了します");
43        scan.close();
44        return;
45      }
46    }
47  }
48}

コメント

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