본문 바로가기

IT, 인터넷/JAVA, 스프링부트

자바 Scanner 사용해서 커피값 계산하기

반응형

import java.util.Scanner;

 

public class Main { 

    public static void main(String[] args) throws Exception {

            

        Scanner sc = new Scanner(System.in);

        String coffee = null;

 

        System.out.println("커피 주문 하세요 >>");

        coffee = sc.next();

        System.out.println(getCoffeePrice(coffee));

    }

 

    // 커피가격 할인율 적용하여 계산

    private static String getCoffeePrice(String value) throws Exception {

 

        // 에스프레소는 2000원, 

        // 아메리카노는 2500원, 

        // 카푸치노 3000원, 

        // 카페라떼 3500원이다. 

        // 5잔 이상 주문시 해당 제품 가격의 5%를 할인해 준다. 

        // 에스프레소는 10장 이상 주문시 에스프레소 가격에 추가로 10% 할인

        String result = "";

 

        String[] array1 = value.split("-");

 

        if(array1.length == 1) { // 스캐너 사용시 공백을 하면 문자가 끝겨서 사용을 하시면 안됩니다.

            System.out.println("하으픈(-)과 콤마(,) 로 커피와 잔수를 구분해 주세요. ex) 에스프레소-1 ex) 에스프레소-2,아메리카노-3");

            throw new Exception("입력값 에러");

        }

 

        if(value.indexOf("에스프레소") != -1 || value.indexOf("아메리카노") != -1 || value.indexOf("카푸치노") != -1

        || value.indexOf("카페라떼") != -1) {

 

        } else {

            System.out.println("주문 할수 없는 커피 입니다. (에스프레소, 아메리카노, 카푸치노, 카페라떼 만 주문 가능)");

            throw new Exception("입력값 에러");

        }

 

        int calculate = 0;

        int discount = 0;

        int espreso = 0;

        double coffeePrice = 0f;

        if(value.indexOf(",") != -1) {

            array1 = value.split(",");

            for(int i=0; i<array1.length; i++) {

                String[] array2 = array1[i].split("-");

                calculate += coffeePay(array2[0], Integer.parseInt(array2[1]));

                discount += Integer.parseInt(array2[1]);

 

                if(array2[0].equals("에스프레소")) {

                    espreso += Integer.parseInt(array2[1]);

                }

            }

        } else {

            calculate += coffeePay(array1[0], Integer.parseInt(array1[1]));

            discount += Integer.parseInt(array1[1]);

 

            if(array1[0].equals("에스프레소")) {

                espreso += Integer.parseInt(array1[1]);

            }

        }

 

        // 할인율 계산

        if(discount >= 5) {

            coffeePrice = calculate - (calculate * 0.05);

        }

 

        if(espreso >= 10) {

            coffeePrice = coffeePrice - ((2000 * espreso) * 0.1);

        }

 

        if(coffeePrice == 0) {

            coffeePrice = calculate;

        }

 

        result = coffeePrice + "원 입니다";

 

        return result;

    }

 

    private static int coffeePay(String value, int su) {

        int result = 0;

 

        if(value.equals("에스프레소")) {

            result = 2000 * su;

        } else if(value.equals("아메리카노")) {

            result = 2500 * su;

        } else if(value.equals("카푸치노")) {

            result = 3000 * su;

        } else if(value.equals("카페라떼")) {

            result = 3500 * su;

        }

 

        return result;

    }

}

반응형