#目的
Javaを使ってプログラミングの経験を積むこと
#対象者
Javaの基本を学んだ初学者
#達成目標
フローチャートと機能詳細を元にプログラミングができる。
#機能詳細
・商品リスト初期化
商品は以下の3つ固定とする。
コーラ100円
オレンジジュース120円
水80円
・入金
1円単位で入金可能とする。
購入可能な最低金額が入金されるまで入金を促す。
(今回の場合、水の80円以上)
・商品選択
入金額の範囲で商品を表示する。
商品名で選択する。
・販売
選択した商品を提供する。
・課金
入金額から購入金額を引く。
釣銭を返す。
#サンプルコード
package vm;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// 商品の初期化
Map<String, Integer> items = new HashMap<String, Integer>();
items.put("コーラ", 100);
items.put("オレンジジュース", 120);
items.put("水", 80);
// 購入最低金額の場合、追加入金
int deposit = 0;
int minSaleAmount = -1;
Scanner scanner = new Scanner(System.in);
do {
// 入金処理
System.out.println("お金を入れて下さい。");
deposit = deposit + scanner.nextInt();
// 金額チェック(最低購入金額)
int loopCount = 0;
for (String itemKey: items.keySet()) {
if(loopCount == 0 || minSaleAmount > items.get(itemKey)) {
minSaleAmount = items.get(itemKey);
}
loopCount++;
}
} while(deposit < minSaleAmount);
// 商品選択
System.out.println("商品を選択してください。");
Map<String, Integer> availablePurchases = new HashMap<String, Integer>();
for (String itemKey: items.keySet()) {
if(deposit >= items.get(itemKey)) {
System.out.println(itemKey + ":" + items.get(itemKey) + "円");
availablePurchases.put(itemKey, items.get(itemKey));
}
}
// 販売
String itemName;
while(true) {
itemName = scanner.next();
if (availablePurchases.containsKey(itemName)){
break;
}
System.out.println("商品名の指定が誤っています。商品名を指定し直してください。");
}
scanner.close();
System.out.println(itemName + "です!");
// 課金機能
deposit = deposit - availablePurchases.get(itemName).intValue();
System.out.println("おつりは、" + deposit + "円です。");
}
}
クラス分けしたバージョンを作成しました。
https://qiita.com/TakumiKondo/items/9f222f44c973bb2eaa06