🍡 java

JAVA | μ½”λ“œλΌλ–Ό μžλ°” κ°•μ˜ (자판기 λ§Œλ“€κΈ°)

c0zi 2023. 3. 27. 21:16
μ½”λ“œλΌλ–Ό

 

이전 κ²Œμ‹œκΈ€μ—μ„œ μžλ°” 클래슀 ~ λ©”μ†Œλ“œ 이후뢀터 잘 이해가 λ˜μ§€ μ•Šκ³  λ§‰ν˜”λ‹€κ³  ν–ˆμ—ˆλ‹€.

λ‚˜λ„μ½”λ”©λ‹˜μ˜ κ°•μ˜λŠ” 일단 μ‹€μŠ΅λΆ€ν„° ν•˜λ©΄μ„œ μ΄ν•΄ν•˜λŠ” 방식이라 이해가 μ•ˆλΌλ„ κ°•μ˜λ₯Ό λ¬΄μž‘μ • λ‹€ λ“£κ³  λ‹€μ‹œ λ³΅μŠ΅ν•΄λ³΄λ € ν–ˆλŠ”λ°, μ§„μ§œ κ·Έλƒ₯ 따라 적기만 ν•˜κ³  μžˆλŠ” λŠλ‚Œμ΄ λ“€μ–΄μ„œ ν•œλ²ˆμ”© 볡슡 ν•˜λ©΄μ„œ λ„˜μ–΄κ°€κΈ°λ‘œ ν–ˆλ‹€.

 

κ·Έλž˜μ„œ κ°„λ‹¨ν•˜κ²Œ κ°œλ…μ„ μž‘μ•„μ€„λ§Œν•œ 책을 찾아보렀고 ν–ˆλŠ”λ° 쒋은 μ‚¬μ΄νŠΈλ₯Ό λ°œκ²¬ν–ˆλ‹€.

 

https://www.codelatte.io/courses/java_programming_basic

 

μžλ°” 무료 κ°•μ˜ - μ½”λ“œλΌλ–Ό

μžλ°”λ‘œ λ°°μš°λŠ” ν”„λ‘œκ·Έλž˜λ° κ°•μ˜ μž…λ‹ˆλ‹€. 이 κ°•μ˜λ§Œ 듀어도 ν”„λ‘œκ·Έλž˜λ°μ˜ μ ˆλ°˜μ€ λ°°μ›λ‹ˆλ‹€. μ˜μ–΄μ˜ 문법을 λ°°μš΄λ‹€κ³  νšŒν™”λ₯Ό 잘 ν•  수 μžˆλŠ” 것이 μ•„λ‹ˆλ“―μ΄ ν”„λ‘œκ·Έλž˜λ°λ„ μ–Έμ–΄ 문법을 λ°°μš΄λ‹€κ³  잘

www.codelatte.io

 

λ…ΈνŠΈμ •λ¦¬μ™€ 짧은 λ™μ˜μƒ κ°•μ˜λ₯Ό 톡해 κ°œλ…κ³Ό μ‹€μŠ΅μ„ 같이 ν•  수 μžˆλŠ” 'μ½”λ“œλΌλ–Ό' κ°•μ˜μΈλ°, μ§€κΈˆκΉŒμ§€ 배운 λ‚΄μš©μ„ λ³΅μŠ΅λ„ ν•˜κ³  μ‘°κΈˆμ”© 이해λ₯Ό ν•œ λ‹€μŒμ— 이전에 λ“£κ³  있던 κ°•μ˜λ„ ν•¨κ»˜ 듣을 κ³„νšμ΄λ‹€.

 

CH1~3은 μ•Œκ³  μžˆλŠ” λ‚΄μš©μ΄ λ§Žμ•„ λΉ λ₯΄κ²Œ 훑어보고 자판기 λ§Œλ“€κΈ° μ˜ˆμ œκ°€ μžˆμ–΄μ„œ κ·Έκ±Έ ν¬μŠ€νŒ… ν•΄λ³΄λ €ν•œλ‹€.

 

Scanner

 

일단 λ‚˜λ„μ½”λ”©λ‹˜ κ°•μ˜μ—μ„œλŠ” μž…μΆœλ ₯ ν•¨μˆ˜κ°€ 거의 λ§ˆμ§€λ§‰μ— μžˆμ–΄μ„œ λ’·λ‚΄μš©μ„ 배우기 μ „κΉŒμ§€ ν•΄κ²°ν•  수 μžˆλŠ” λ¬Έμ œκ°€ μ œν•œμ μΈ λ“―ν•œ λŠλ‚Œμ„ λ°›μ•˜λŠ”λ°, μ½”λ“œλΌλ–Όμ—μ„œ μž…μΆœλ ₯ ν•¨μˆ˜μ— λŒ€ν•΄ κ°„λ‹¨ν•˜κ²Œ μ•Œ 수 μžˆμ—ˆλ‹€.

 

Scanner scanner = new Scanner(System.in);
String value = scanner.nextLine();

 

κ³Ό 같이 λ¬Έμžμ—΄μ„ μž…λ ₯받을 수 있고, λ°˜λ“œμ‹œ import java.util.Scanner;λ₯Ό μž…λ ₯ν•΄μ•Ό scanner 객체λ₯Ό μ‚¬μš©ν•  수 μžˆμ—ˆλ‹€.

 

자판기 λ§Œλ“€κΈ°

 

package codelatte;

import java.util.Scanner;

public class μžνŒκΈ°λ§Œλ“€κΈ° {
    public static void main(String[] args) {
        final String[] beverageNames = {"μ½”μ½”νŒœ", "사이닀", "μ‹ν˜œ"}; // 음료 μ’…λ₯˜
        final int[] beverageCost = {1000, 1200, 850};
        final int[] beverageStock = {3, 1, 2};
        int selectedbeverage = -1;
        int money = 0;
        int isExit = -1;

        do { 
            for (int i = 0; i < 3; i++) { // 음료 좜λ ₯
                System.out.printf("%d. %s : %d원\n", i, beverageNames[i], beverageCost[i]);
            }
            do { // κΈˆμ•‘ μž…λ ₯ λ°›κΈ°
                Scanner scanner = new Scanner(System.in);
                System.out.println("λˆμ„ νˆ¬μž…ν•΄ μ£Όμ„Έμš”");
                money = money + scanner.nextInt();

                do { // 음료 μž…λ ₯ λ°›κΈ°
                    System.out.println("음료λ₯Ό 선택해 μ£Όμ„Έμš”");
                    selectedbeverage = scanner.nextInt();
                    if (beverageStock[selectedbeverage] <= 0) {
                        System.out.println("μŒλ£Œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ 음료λ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”.");
                    }
                } while (beverageStock[selectedbeverage] <= 0); // 재고 λΆ€μ‘± μ‹œ λ‹€μ‹œ 음료 μž…λ ₯

                if (money < beverageCost[selectedbeverage]) {
                    System.out.println("κΈˆμ•‘μ΄ λΆ€μ‘±ν•©λ‹ˆλ‹€.");
                }
            } while (money < beverageCost[selectedbeverage]); // κΈˆμ•‘ λΆ€μ‘± μ‹œ λ‹€μ‹œ κΈˆμ•‘ μž…λ ₯

            beverageStock[selectedbeverage] = beverageStock[selectedbeverage] -1;
            money = money - beverageCost[selectedbeverage];

            System.out.printf("%sλ₯Ό κ΅¬λ§€ν•˜μ˜€μŠ΅λ‹ˆλ‹€.\n", beverageNames[selectedbeverage]);
            System.out.printf("차앑은 %dμž…λ‹ˆλ‹€.\n", money);
            System.out.println("거래λ₯Ό μ’…λ£Œν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ? (거래 μ’…λ£Œ:1, μ΄μ–΄μ„œ 거래 : 0)"); // μž”λˆ λ°˜ν™˜

            Scanner scanner = new Scanner(System.in);
            isExit = scanner.nextInt();

        } while (isExit == 0);
    }
}

 

do while문이 3번 μ€‘μ²©λ˜μ–΄μ„œ μ²˜μŒμ—λŠ” 무슨 μ½”λ“œμΈμ§€ λ§‰λ§‰ν–ˆλŠ”λ°, κ°•μ˜μ—μ„œ μ„€λͺ…ν•΄μ£Όμ‹œλŠ” μˆœμ„œλ„λ₯Ό 천천히 읽어보며 λ‚΄κ°€ 직접 μ½”λ“œλ₯Ό 짜보렀고 λ…Έλ ₯ν–ˆλ‹€. 

 

μ΄λ ‡κ²Œ ν•΄μ„œ ch.4κΉŒμ§€ νƒ€νŒŒν–ˆλ‹€. λ‹€μŒλΆ€λΆ„μ€ 클래슀인데 볡슡인 만큼 μ‘°κΈˆμ΄λΌλ„ 더 이해가 됐으면 μ‹Άλ‹€. γ…Žγ…Ž