0
2

More than 3 years have passed since last update.

Javaで作る自動販売機のサンプル

Last updated at Posted at 2019-12-04

目的

Javaを使ってプログラミングの経験を積むこと

対象者

Javaの基本を学んだ初学者

達成目標

フローチャートと機能詳細を元にプログラミングができる。

フローチャート

image.png

機能詳細

・商品リスト初期化
商品は以下の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

0
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2