インスタンスを2個生成し操作する

インスタンスを2個生成し操作する

練習問題11の3

箱を表すクラスBoxを定義し、Boxクラスのインスタンスを2個生成して、各操作ができるプログラムを作成する。

クラス:Box
変数:
private String color 箱の色
private String shape 箱の形
private int num 箱の中のボールの数
private static int totalNumber すべての箱のボールの総数
メソッド:
insertBalls 機能:引数として渡された個数のボールを箱に入れる
removeBalls 機能:引数として渡された個数のボールを箱から取り出す
   個数が不足する場合はすべてのボールを取り出す
displayInfo 機能:箱の色・形、ボールの数を表示する
static displayTotalNumber 機能:すべての箱のボールの総数を表示する
実行画面

操作を入力して下さい

ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>1
0---色:赤, 形:円形, 個数:1
1---色:青, 形:四角, 個数:2
ボールを投入する箱の番号を入力して下さい > 1
投入するボールの個数を入力して下さい > 2
2個のボールを入れました。

 

操作を入力して下さい
ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>3
ボールの合計は5個です。

 

操作を入力して下さい
ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>2
0---色:赤, 形:円形, 個数:1
1---色:青, 形:四角, 個数:4
ボールを取り出す箱の番号を入力して下さい > 0
取り出すボールの個数を入力して下さい > 2
1個のボールを取り出しました。

 

操作を入力して下さい
ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>1
0---色:赤, 形:円形, 個数:0
1---色:青, 形:四角, 個数:4
ボールを投入する箱の番号を入力して下さい > 2
箱の番号の入力が誤っています。

 

操作を入力して下さい
ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>0

解答例

class Box {

private String color;
private String shape;
private int num;
private static int totalNumber = 0;

 

public Box(String c, String s, int n) {
color = c;
shape = s;
num = n;
totalNumber += n;
}

 

public void insertBalls(int n) {
num += n;
totalNumber += n;
System.out.println( n + "個のボールを入れました。");
}

 

public void removeBalls(int n) {
if(numSystem.out.println( num + "個のボールを取り出しました。");
totalNumber -= num;
num = 0;
}
else {
System.out.println( n + "個のボールを取り出しました。");
totalNumber -= n;
num -= n;
}
}

 

public void displayInfo() {
System.out.println("色:" + color + ", 形:" + shape + ", 個数:" + num);
}

 

public static void displayTotalNumber() {
System.out.println("ボールの合計は" + totalNumber + "個です。");
}
}

import java.io.*;

 

public class ren11_3 {

 

public static void main(String[] args) throws IOException {
BufferedReader br
= new BufferedReader( new InputStreamReader(System.in) );

 

Box boxes[] = new Box[2];
boxes[0] = new Box("赤", "円形", 1);
boxes[1] = new Box("青", "四角", 2);

 

System.out.println("操作を入力して下さい");
System.out.print("ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>");
int n = Integer.parseInt(br.readLine());
int boxNum;
while( 1 <= n && n <= 3) {
switch( n ) {
case 1:
for(int i=0; iSystem.out.print( i + "---");
boxes[i].displayInfo();
}
System.out.print("ボールを投入する箱の番号を入力して下さい > ");
boxNum = Integer.parseInt(br.readLine());
if( 0 <= boxNum && boxNum <= 1 ){
System.out.print("投入するボールの個数を入力して下さい > ");
boxes[boxNum].insertBalls(Integer.parseInt(br.readLine()));

}
else {
System.out.println("箱の番号の入力が誤っています。");
}
break;
case 2:
for(int i=0; iSystem.out.print( i + "---");
boxes[i].displayInfo();
}
System.out.print("ボールを取り出す箱の番号を入力して下さい > ");
boxNum = Integer.parseInt(br.readLine());
if( 0 <= boxNum && boxNum <= 1 ){
System.out.print("取り出すボールの個数を入力して下さい > ");
boxes[boxNum].removeBalls(Integer.parseInt(br.readLine()));
}

else {
System.out.println("箱の番号の入力が誤っています。");
}
break;
case 3:
Box.displayTotalNumber();
break;
}
System.out.println();
System.out.println("操作を入力して下さい");
System.out.print("ボール投入(1), ボール取出(2), ボール総数表示(3), 終了(他)>");
n = Integer.parseInt(br.readLine());
}
}

 

}

 

インスタンスを2個生成し操作する関連ページ

連続して表示するメソッドを作る for文使用
メソッドを使用して、横幅高さの長方形を表示する
2つの整数の差を計算して表示する メソッド
3つの整数の最小値を返す メソッド
整数nの階乗を計算して表示する メソッド
整数の2乗を表示する メソッド
2乗と4乗を表示するメソッド
4つの整数の中で最小値を表示するメソッド
配列を宣言し、整数逆順に表示する メソッド
クラスを作成し、インスタンスに記憶し表示する
クラスにメソッドを使用する
クラスを作成し、インスタンスに記憶しメソッドを介して表示する
クラスを作成し、メインメソッドを実行し表示を確認する
コンストラクタやメソッドで時計表示
コンストラクタやメソッドで時計表示し何秒か時間を進めたり戻す
メンバ変数、コンストラクタ、メンバメソッドを使用し枚数表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し水量表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し位置表示する
メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する
インスタンス配列を使用して、集計表示を行う コンストラクタ
フィールド変数がprivateで直接参照できないときに返すメソッド
privateを使用して、操作する
インスタンスを複数生成し、操作する