[자바 무료 강의] 자판기를 만들어보자 2 - 코드라떼
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의자판기를 만들어보자 2최종수정일 2021-09-04
아이콘약 7분

이전 강의에서 작성한 간이 순서도를 구체화하는 강의입니다. 간이 순서도로는 프로그램을 만들기 부족한데요. 프로그램을 만들기 위한 순서도를 어떻게 변경하는지 알아봅시다. 생각의 흐름을 천천히 느껴보세요.

추가 노트

자판기와 관련된 코드는 마지막 자판기 강의에 있습니다.
자판기 강의를 끝까지 들어보셔야 합니다.


자판기의 순서도

순서도

도전자 질문
아이콘haewon48(2024-08-09 01:42 작성됨)
import java.util.Arrays;
import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        // 자판기 상품 이름 입력
        String[][] drink = new String[][]
                {{"코카콜라", "칠성사이다", "갈배사이다", "데자와"}, {"하늘보리차", "이프로", "레몬녹차", "봉봉"}};
        // 자판기 재고 확인
        int[][] check = new int[][]
                {{0, 1, 1, 1}, {1, 0, 1, 1}};
        // 자판기 상품 가격 입력
        int[][] price = new int[][]
                {{1700, 1700, 2000, 1300}, {1000, 1500, 1000, 1800}};

        // 자판기 상품 출력
        for (int i = 0; i < 2; i++) {
            System.out.printf("|%5s|%5s|%5s|%5s|\n", drink[i][0], drink[i][1], drink[i][2], drink[i][3]);
        }

        // 돈 투입

        Scanner sc = new Scanner(System.in);
        System.out.println("돈을 넣어주세요.");
        int money = sc.nextInt();
        String select = null;
        // 상품 선택하는데 만약 선택안하면(false 버튼 누르면) 돈 그냥 환불
        while (true) {
            select = sc.next();
            // 구매 안함 버튼 누른 경우
            if (select.equals("quit"))
            { System.out.println("음료 구매를 멈추겠습니다.");
                break;}

            int findex = 0;
            for (int i = 0; i < 2; i++) {
                int sindex = 0;
                sindex = Arrays.asList(drink[i]).indexOf(select);
                if (sindex > -1) {
                    findex = i;
                    // 고른 상품 존재하는지
                    if (check[findex][sindex] == 1) // 1일 경우 재고 있는 거임
                    {
                        // 내가 낸 돈으로 살 수 있는 가격인지 확인
                        if (money >= price[findex][sindex]) {
                            // 사용한 가격만큼 차감
                            money -= price[findex][sindex];
                            System.out.println(select + "(이)가 나왔습니다.");
                            System.out.println("남은 금액은 "+money+"원입니다.");
                        }
                        else {
                            System.out.println("돈이 부족합니다.");
                            break;
                        }
                    }
                    else {
                        System.out.println(select+"는(은) 재고가 없습니다.");
                    }
                }
            }
        }
        System.out.println("거스름돈 "+money+"원을 돌려드렸습니다.");
    }
}
코드를 짜보기는 했는데, 효율적인 코딩 방식일까요..?
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io
사업자등록번호 : 824-06-01921
통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호
Lesson List button
코스자바로 배우는 프로그래밍
hamburger button
강의자판기를 만들어보자 2최종수정일 2021-09-04
아이콘약 7분

이전 강의에서 작성한 간이 순서도를 구체화하는 강의입니다. 간이 순서도로는 프로그램을 만들기 부족한데요. 프로그램을 만들기 위한 순서도를 어떻게 변경하는지 알아봅시다. 생각의 흐름을 천천히 느껴보세요.

추가 노트

자판기와 관련된 코드는 마지막 자판기 강의에 있습니다.
자판기 강의를 끝까지 들어보셔야 합니다.


자판기의 순서도

순서도

도전자 질문
아이콘haewon48(2024-08-09 01:42 작성됨)
import java.util.Arrays;
import java.util.Scanner;

public class practice {
    public static void main(String[] args) {
        // 자판기 상품 이름 입력
        String[][] drink = new String[][]
                {{"코카콜라", "칠성사이다", "갈배사이다", "데자와"}, {"하늘보리차", "이프로", "레몬녹차", "봉봉"}};
        // 자판기 재고 확인
        int[][] check = new int[][]
                {{0, 1, 1, 1}, {1, 0, 1, 1}};
        // 자판기 상품 가격 입력
        int[][] price = new int[][]
                {{1700, 1700, 2000, 1300}, {1000, 1500, 1000, 1800}};

        // 자판기 상품 출력
        for (int i = 0; i < 2; i++) {
            System.out.printf("|%5s|%5s|%5s|%5s|\n", drink[i][0], drink[i][1], drink[i][2], drink[i][3]);
        }

        // 돈 투입

        Scanner sc = new Scanner(System.in);
        System.out.println("돈을 넣어주세요.");
        int money = sc.nextInt();
        String select = null;
        // 상품 선택하는데 만약 선택안하면(false 버튼 누르면) 돈 그냥 환불
        while (true) {
            select = sc.next();
            // 구매 안함 버튼 누른 경우
            if (select.equals("quit"))
            { System.out.println("음료 구매를 멈추겠습니다.");
                break;}

            int findex = 0;
            for (int i = 0; i < 2; i++) {
                int sindex = 0;
                sindex = Arrays.asList(drink[i]).indexOf(select);
                if (sindex > -1) {
                    findex = i;
                    // 고른 상품 존재하는지
                    if (check[findex][sindex] == 1) // 1일 경우 재고 있는 거임
                    {
                        // 내가 낸 돈으로 살 수 있는 가격인지 확인
                        if (money >= price[findex][sindex]) {
                            // 사용한 가격만큼 차감
                            money -= price[findex][sindex];
                            System.out.println(select + "(이)가 나왔습니다.");
                            System.out.println("남은 금액은 "+money+"원입니다.");
                        }
                        else {
                            System.out.println("돈이 부족합니다.");
                            break;
                        }
                    }
                    else {
                        System.out.println(select+"는(은) 재고가 없습니다.");
                    }
                }
            }
        }
        System.out.println("거스름돈 "+money+"원을 돌려드렸습니다.");
    }
}
코드를 짜보기는 했는데, 효율적인 코딩 방식일까요..?
이용약관|개인정보취급방침
알유티씨클래스|대표, 개인정보보호책임자 : 이병록
이메일 : cs@codelatte.io|운영시간 09:00 - 18:00(평일)
사업자등록번호 : 824-06-01921|통신판매업신고 : 2021-성남분당C-0740
주소 : 경기도 성남시 분당구 대왕판교로645번길 12, 9층 24호(경기창조혁신센터)