제어문 논리 이해하기

김창현·2023년 3월 21일
1

아래 플로차트를 보고 프로그램을 짜 보세요

UNIT : 화폐단위

NUM : 화폐매수

SW : 스위칭 변수 , 화폐의 다음 단위를 위해

MONEY : 입력받는 금액

아래 코드는 금액을 입력받아

예)

12345

10000 1개

5000 0개

1000 2개

500 0개

100 3개

50 0개

10 4개

5 1개

1 0개

를 계산하는 프로그램 입니다

import java.util.Scanner;

public class ControlStatement {
    public static void main(String[] args) {
        Scanner inputMoney = new Scanner(System.in);

        printRequestMoney();
        int money = inputMoney.nextInt();
        printMoney(money);

        int unit = 10000;
        int num = 0;
        int sw = 0;

        while (isUnitValid(unit)) {
            num = getNumValue(money, unit);
            money = getMoneyValue(money, unit, num);

            printResult(unit, num);

            if (isSwZero(sw)) {
                unit /= 2;
                sw = 1;
                continue;
            }
            if (!isSwZero(sw)) {
                unit /= 5;
                sw = 0;
            }
        }

        if (isUnitOne(unit)) {
            printResult(unit, getNumValue(money, unit));
        }
    }

    private static boolean isUnitValid(int unit) {
        return unit > 1;
    }

    private static int getNumValue(int money, int unit) {
        return money / unit;
    }

    private static int getMoneyValue(int money, int unit, int num) {
        return money - unit * num;
    }

    private static boolean isSwZero(int sw) {
        return sw == 0;
    }

    private static boolean isUnitOne(int unit) {
        return unit == 1;
    }

    private static void printRequestMoney() {
        System.out.print("계산할 금액을 입력하세요. : ");
    }

    private static void printMoney(int money) {
        System.out.println("입력한 금액은 : " + money + "원 입니다.");
    }

    private static void printResult(int unit, int num) {
        System.out.println("화폐단위 : " + unit + ", 화폐매수 : " + num + "개");
    }
}
profile
클린코드 지향

0개의 댓글