メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する

メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する

練習問題10の8

財布を表すクラスWallet、自動販売機を表すクラスVendingMachineを作成し、各操作ができるプログラムを作成する。

クラス:Wallet
メンバ変数:
private int money 現在の財布の中身
コンストラクタ:
public Wallet(int m) 財布の中身の初期値を指定してインスタンスを生成
ただし引数mの値がマイナスの場合は0円とする
メンバメソッド:
insertMoney 機能:引数に指定された金額を財布に入れる
takeOutMoney 機能:引数に指定された金額を財布から取り出す
   ただし金額が不足する場合は財布内の全額を取り出す
display 機能:現在の財布の中身を表示する

 

クラス:VendingMachine
メンバ変数:
private int money 投入された金額
private int num 商品の個数
コンストラクタ:
public VendingMachine(int n) 商品の個数を指定してインスタンスを生成
投入金額の初期値は0円とする
メンバメソッド:
insertCoins 機能:引数に指定された金額だけ自動販売機に投入する
cancel 機能:現在の投入額を釣り銭として返却する
purchase 機能:100円の商品を1個購入する
   投入金額不足や売切れの場合はその旨を表示する。
insertGoods 機能:引数に指定された個数だけ商品を投入する。

 

クラス:ren10_8(メインのクラス)
・中身の初期値が1,000円の財布を1個生成する
・商品の個数が3個の自動販売機を1個生成する
各機能
(1) 硬貨投入 財布から指定金額を取り出して自動販売機に投入する
(2) 商品購入 自動販売機で商品1個を購入して釣り銭を財布に戻す
(3) 硬貨取出 自動販売機に投入した金額を取り出して財布に戻す
(4) 商品投入 自動販売機に指定した個数だけ商品を補充する
(5) 所持金表示 現在の財布の中身を表示する

 

実行画面

現在の入金額:0円

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:1000円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>1
投入する金額を入力して下さい > 100
財布から100円取り出しました。
現在の入金額:100円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:900円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>2
現在の入金額:0円
財布に0円入れました。

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:900円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>1
投入する金額を入力して下さい > 150
財布から150円取り出しました。
現在の入金額:150円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:750円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>3
現在の入金額:0円
財布に150円入れました。

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:900円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>1
投入する金額を入力して下さい > 150
財布から150円取り出しました。
現在の入金額:150円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>5
現在の財布の中身:750円

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>2
現在の入金額:0円
財布に50円入れました。

 

操作を入力して下さい
硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品

解答例

class Wallet {

private int money;

 

public Wallet(int m) {
if(m<0) money = 0;
else money = m;
}

 

public int insertMoney(int m) {
money += m;
return m;
}

 

public int takeOutMoney(int m) {
if(m > money) {
m = money;
money = 0;
return m;
}
else {
money -= m;
return m;
}
}

 

public void display() {
System.out.println("現在の財布の中身:" + money + "円");
}

 

}

class VendingMachine {

private int money;
private int num;

 

public VendingMachine(int n) {
money = 0;
num = n;
System.out.println("現在の入金額:" + money + "円");
}

 

public void insertCoins(int m) {
money += m;
System.out.println("現在の入金額:" + money + "円");
}

 

public int cancel() {
int m = money;
money = 0;
System.out.println("現在の入金額:" + money + "円");
return m;
}

 

public int purchase() {
int change = 0;
if(money>=100 && num>0) {
num--;
change = money - 100;
money = 0;
System.out.println("現在の入金額:" + money + "円");
}
else if(money<100) {
System.out.println("お金が足りません。");
}
else {
System.out.println("売切れです。");
}
return change;
}

 

public void insertGoods(int n) {
num += n;
System.out.println("商品を" + n + "個投入しました。");
}
}

import java.io.*;

 

public class ren10_8 {

 

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

 

Wallet wallet = new Wallet(1000);
VendingMachine machine = new VendingMachine(3);

 

System.out.println("操作を入力して下さい");
System.out.print("硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>");
int n = Integer.parseInt(br.readLine());
int money;
while( 1 <= n && n <= 5) {
switch( n ) {
case 1:
System.out.print("投入する金額を入力して下さい > ");
money = Integer.parseInt(br.readLine());
money = wallet.takeOutMoney(money);
System.out.println("財布から" + money + "円取り出しました。");
machine.insertCoins(money);
break;
case 2:
money = machine.purchase();
wallet.insertMoney(money);

System.out.println("財布に" + money + "円入れました。");
break;
case 3:
money = machine.cancel();
wallet.insertMoney(money);
System.out.println("財布に" + money + "円入れました。");
break;
case 4:
System.out.print("投入する商品の個数を入力して下さい > ");
machine.insertGoods(Integer.parseInt(br.readLine()));
break;
case 5:
wallet.display();
break;
}
System.out.println();

System.out.println("操作を入力して下さい");
System.out.print("硬貨投入(1), 商品購入(2), 硬貨取出(3), 商品投入(4), 所持金表示(5), 終了(他)>");
n = Integer.parseInt(br.readLine());
}
}

 

}

 

メンバ変数、コンストラクタ、メンバメソッドを使用し財布の中身残量表示する関連ページ

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