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

public class Pencil {
	public String color;
	public int penLength=5;
	
	public Pencil(String color){
		this.color=color;
	}
	
	public void write(){
		if(this.penLength <=0){
			System.out.println("もう書けません!");
			return;
		}
		System.out.println(this.color+"で書いた!");
		this.penLength--;
	}
	public void showStatus(){
		System.out.println("色:"+this.color);
		for(int i=0;i<this.penLength;i++){
			System.out.print('+');
		}
		System.out.println('>');
	}
}

●PencilAppクラス

import java.util.Scanner;

public class PencilApp {

	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		System.out.print("何色の鉛筆を作りますか>:");
		String color=scan.next();
		Pencil pen=new Pencil(color);
		while(true){
			System.out.print("操作を入力してください1...書く,2...情報を見る,3...終了>");
			int select =scan.nextInt();
			switch(select){
			case 1:
				pen.write();
				break;
			case 2:
				pen.showStatus();
				break;
			default:
				System.out.println("アプリケーションを終了します。");
				scan.close();
				return;
			}
		}
	}
}

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
アプリケーションを終了します

[解答例]

import java.util.ArrayList;
import java.util.Scanner;
public class PencilApp {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		ArrayList<Pencil> list=new ArrayList<>();
		Pencil pen=null;//今もっているペン(最初はなし)
		while(true) {
			System.out.print("操作を入力してください 1…鉛筆をつくる 2…鉛筆を持つ 3…鉛筆で書く 4…終了>");
			int select=scan.nextInt();
			switch(select) {
			case 1:
				System.out.print("何色の鉛筆を作りますか>");
				String color=scan.next();
				Pencil pencil=new Pencil(color);
				list.add(pencil);
				System.out.println(pencil.color+"色の鉛筆を作りました。");
				pencil.showStatus();
				break;
			case 2:
				if(list.size()==0) {
					System.out.println("まず鉛筆をつくってください!");
					break;
				}
				for(int i=0;i<list.size();i++) {
					System.out.println(i+"..."+list.get(i).color);
				}
				System.out.print("何番の鉛筆を持ちますか>");
				int num=scan.nextInt();
				pen=list.get(num);
				System.out.println(pen.color+"の鉛筆を持った");
				break;
			case 3:
				if(pen==null) {
					System.out.println("まず鉛筆を持ってください!");
					break;
				}
				pen.write();
				pen.showStatus();
				break;
			default:
				System.out.println("アプリケーションを終了します");
				scan.close();
				return;
			}
		}
	}
}