JJ プログラム仙人修行日誌

2024/04/20 からは、プログラム仙人修行の日誌を書いてます。

gg094.java

import java.io.*;

class gg094 {
    public static void main(String[] args) {
        int [] kouka  = { 10, 50, 100, 500}; // 硬貨の金額
        int [] hanbaiki = {  0,  0,   0,   0}; // 自販機ないの硬貨の枚数
        int [] tounyuKin = {  0,  0,   0,   0}; // 投入された硬貨の枚数
        int [] maisu  = {  0,  0,   0,   0}; // お釣の硬貨の枚数

        int tounyuKinGoukei =0;
        int oturi = 0;

        // 自販機の現在のコインの枚数を尋ねる

        try {
            BufferedReader xin = new BufferedReader(new InputStreamReader(System.in));
            for(int i=3; i>=0; i--){
                System.out.println("自販機内の" + kouka[i] + "玉の枚数は");
                String xmoji = xin.readLine();
                hanbaiki[i] = Integer.parseInt(xmoji);
            }

            // 投入コインの枚数を尋ねる

            for(int i=3; i>=0; i--){
                System.out.println("お客さんが投入する" + kouka[i] + "玉の枚数は");
                tounyuKin[i] = Integer.parseInt(xin.readLine());
            }

        }catch (Exception ie) {
            System.out.println(ie);
        }

        // 投入された合計金額を求める

        for(int i=3; i>=0; i--){
            tounyuKinGoukei = tounyuKinGoukei + kouka[i] * tounyuKin[i];
        }
        System.out.println("投入された金額は " + tounyuKinGoukei + " 円");

        // 120円を使ったあとのお釣りを計算
        if(tounyuKinGoukei >= 120 ){

            // 自販機内のコインの枚数を計算

            for(int i=3; i>=0; i--){
                hanbaiki[i] = hanbaiki[i] + tounyuKin[i];
                System.out.println("自販機内の現在の" + kouka[i] + "玉は," + hanbaiki[i] + "個");
            }
            System.out.println();

            // お釣を自販機内のコインで割り当てる
            oturi = tounyuKinGoukei - 120;
            System.out.println("お釣は " + oturi + " 円");

            int j = 3;
            while((oturi > 0) && (j >= 0)){ // お釣割り当てループ
                while((oturi >= kouka[j])&&(hanbaiki[j] >0)) { // そのコインが何枚あるかのループ
                    oturi = oturi - kouka[j];
                    hanbaiki[j] = hanbaiki[j] -1;
                    maisu[j] = maisu[j] + 1;
                }
                j = j -1;
            }

// 結果を表示
            if (oturi == 0){
                //   可能なら,お釣のコインの枚数
                for(int i=3; i>=0; i--){
                    System.out.println(" お釣の " + kouka[i] + " 玉:" + maisu[i] + " 個");
                }
            }else{
            //   つり銭の手配が不可能なら,"つり銭不足"
                System.out.println("つり銭不足");
            // 回復処理
                for(int i=3; i>=0; i--){
                    hanbaiki[i] = hanbaiki[i] + maisu[i] - tounyuKin[i];
                    maisu[i] = 0;
                }
                for(int i=3; i>=0; i--){
                    System.out.println("自販機内の現在の" + kouka[i] + "玉は," + hanbaiki[i] + "個");
                }
                System.out.println();
            }

        }else{
            //入金が120円未満なら,"入金不足"
            System.out.println("入金不足");
        }
    }
}