편집 기록

편집 기록
  • 프로필 편집요청빌런님의 편집
    날짜2023.02.13

    Java 개인 연습 중 배열에서 오류가 났는데 해결 방법을 모르겠습니다.


    맨 위가 메인함수용 클래스(오류난 곳)이고

    아래에 클래스들이 참조타입용 클래스들입니다.

    이미지 캡쳐한 걸 여기에 올리고싶은데 잘 안올라가서 글로 써보자면

    Drink[] drinks = new Drink[100]; 이부분을 비롯한 아래에 있는 drinks들에 빨간줄이 그어져 있구요.

    drinks에 마우스커서를 올리면

    dirnks cannot be resolved to a varible 5quick fixes available Create local variable 'drinks' Create field 'drinks' Create parameter 'drinks' Remove assignment Change to 'Drink'

    라고 뜹니다. 메인함수 작성하고 있을 때는 잘돌아갔는데

    drinks[userChoice - 1] != null 이부분을 썻을 때쯤 오류가 났고 (이 이전에 났을 수도 있는데 확인은 못해봤습니다)

    이부분을 지워도 빨간줄은 그대로 남아있습니다.

    해결방법 알려주시면 감사하겠습니다.

    package ex02;
    
    import java.util.Scanner;
    
    public class VendingMachineProgram {
    
        // main thread
        public static void main(String[] args) {
    
            boolean flag = true;
            final int END = 0;
            final int BUY = 1;
            final int MANAGE = 2;
            Scanner sc = new Scanner(System.in);
            int userChoice = -1;
            int 
    
            Drink[] drinks = new Drink[100];
            VendingMachine vendingMachine1 = new VendingMachine(1, drinks, 5_000);
            drinks[0] = new Pet("(Pet)코카콜라 500ml", 1500, 20);
            drinks[1] = new Pet("(Pet)코카콜라 Zero 500ml", 1300, 20);
            drinks[2] = new Pet("(Pet)펩시콜라 500ml", 1300, 20);
            drinks[3] = new Pet("(Pet)펩시콜라 Zero 라임슈가향 500ml", 1300, 20);
            drinks[4] = new Pet("(Can)코카콜라 250ml", 1000, 20);
            drinks[5] = new Pet("(Can)코카콜라 Zero 250ml", 900, 20);
            drinks[6] = new Pet("(Can)펩시콜라 250ml", 900, 20);
            drinks[7] = new Pet("(Can)펩시콜라 Zero 라임슈가향 250ml", 900, 20);
            drinks[8] = new Tea("밀크커피", 400, 100);
            drinks[9] = new Tea("고급커피", 500, 100);
            drinks[10] = new Tea("율무차", 400, 100);
    
            while (flag) {
                System.out.println("어서오세요. 사용 목적을 선택해주세요.");
                System.out.println("1.음료 구매\t2.자판기 관리\t0.나가기");
                userChoice = sc.nextInt();
                if (userChoice == BUY) {
                    showInfo(drinks);
                    System.out.println("구매할 음료 번호를 입력하세요.");
                    userChoice = sc.nextInt();
                    if(drinks[userChoice - 1] != null) {
                        System.out.println("구매할 수량을 선택하세요");
    
                    }else {
                        System.out.println("음료 번호를 잘못 입력하였습니다.");
                    }
                } else if (userChoice == MANAGE) {
    
                } else if (userChoice == END) {
                    System.out.println("자판기 사용을 종료합니다. 안녕히가십시오.");
                    flag = false;
                } else {
                    System.out.println("잘못입력하였습니다. 다시한번 입력해주세요");
                }
    
            }//end of while
    
        }// end of main
    
        static void showInfo(Drink[] drinks) {
            for(int i = 0; i < drinks.length; i++) {
                if(drinks[i] != null) {
                System.out.println("***" + (i + 1) + "번 음료***");
                drinks[i].showInfo();
                System.out.println("=====================");
                }
            }
        }
    
    }// end of class
    
    package ex02;
    
    public abstract class Drink {
    
        private String name;
        private int price;
    
        public Drink(String name, int price) {
            this.name = name;
            this.price = price;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        protected abstract void showInfo();
    
    }
    
    package ex02;
    
    public class Pet extends Drink {
    
        private int amount;
    
        public Pet(String name, int price, int amount) {
            super(name, price);
            this.amount = amount;
        }
    
        public int getAmount() {
            return amount;
        }
    
        public void setAmount(int amount) {
            this.amount = amount;
        }
    
        public void takeOut(int amount) {
    
            this.amount -= amount;
            System.out.println();
        }
    
        @Override
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 수량: " + amount + "개");
        }
    
    }
    
    package ex02;
    
    public class Can extends Drink {
    
        private int amount;
    
        public Can(String name, int price, int amount) {
            super(name, price);
            this.amount = amount;
        }
    
        public int getAmount() {
            return amount;
        }
    
        public void setAmount(int amount) {
            this.amount = amount;
        }
    
        public void takeOut(int amount) {
    
            this.amount -= amount;
            System.out.println();
        }
    
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 수량: " + amount  + "개");
        }
    
    }
    
    package ex02;
    
    import java.util.Random;
    
    public class Tea extends Drink {
    
        private int capacity;
    
        public Tea(String name, int price, int capacity) {
            super(name, price);
            this.capacity = capacity;
        }
    
        public int getCapacity() {
            return capacity;
        }
    
        public void setCapacity(int capacity) {
            this.capacity = capacity;
        }
    
        static int teaSpoon() {
            Random random = new Random();
            int teaSpoon = random.nextInt(3) + 4;
            return 0;
        }
    
        public void takeOut(int amount) {
    
            for (int i = 0; i < amount; i++) {
                this.capacity -= teaSpoon();
                System.out.println();
            }
        }
        @Override
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 믹스량: " + capacity + "g");
        }
    
    }// end of class
    
    package ex02;
    
    public class VendingMachine {
    
        private int id;
        private Drink[] drinks; // 들어있는 음료
        private int water; // Tea용 물
        private int money; // 수익금
    
        public VendingMachine(int id, Drink[] drinks, int water) {
    
            this.id = id;
            this.drinks = drinks;
            this.water = water;
    
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public Drink[] getDrinks() {
            return drinks;
        }
    
        public void setDrinks(Drink[] drinks) {
            this.drinks = drinks;
        }
    
        public int getWater() {
            return water;
        }
    
        public void setWater(int water) {
            this.water = water;
        }
    
        public int getMoney() {
            return money;
        }
    
        public void setMoney(int money) {
            this.money = money;
        }
    
        public void showInfo() {
            System.out.println("자판기 번호: " + id);
            System.out.println("잔여 생수: " + water + "ml");
            System.out.println("수익금: " + money);
            System.out.println("");
        }
    
    }
    
  • 프로필 김지현님의 편집
    날짜2023.02.12

    Java 개인 연습 중 배열에서 오류가 났는데 해결 방법을 모르겠습니다.


    맨 위가 메인함수용 클래스(오류난 곳)이고

    아래에 클래스들이 참조타입용 클래스들입니다.

    이미지 캡쳐한 걸 여기에 올리고싶은데 잘 안올라가서 글로 써보자면

    Drink[] drinks = new Drink[100]; 이부분을 비롯한 아래에 있는 drinks들에 빨간줄이 그어져 있구요.

    drinks에 마우스커서를 올리면

    dirnks cannot be resolved to a varible 5quick fixes available Create local variable 'drinks' Create field 'drinks' Create parameter 'drinks' Remove assignment Change to 'Drink'

    라고 뜹니다. 메인함수 작성하고 있을 때는 잘돌아갔는데

    drinks[userChoice - 1] != null 이부분을 썻을 때쯤 오류가 났고 (이 이전에 났을 수도 있는데 확인은 못해봤습니다)

    이부분을 지워도 빨간줄은 그대로 남아있습니다.

    해결방법 알려주시면 감사하겠습니다.

    ```package ex02;

    import java.util.Scanner;

    public class VendingMachineProgram {

    // main thread
    public static void main(String[] args) {
    
        boolean flag = true;
        final int END = 0;
        final int BUY = 1;
        final int MANAGE = 2;
        Scanner sc = new Scanner(System.in);
        int userChoice = -1;
        int 
    
        Drink[] drinks = new Drink[100];
        VendingMachine vendingMachine1 = new VendingMachine(1, drinks, 5_000);
        drinks[0] = new Pet("(Pet)코카콜라 500ml", 1500, 20);
        drinks[1] = new Pet("(Pet)코카콜라 Zero 500ml", 1300, 20);
        drinks[2] = new Pet("(Pet)펩시콜라 500ml", 1300, 20);
        drinks[3] = new Pet("(Pet)펩시콜라 Zero 라임슈가향 500ml", 1300, 20);
        drinks[4] = new Pet("(Can)코카콜라 250ml", 1000, 20);
        drinks[5] = new Pet("(Can)코카콜라 Zero 250ml", 900, 20);
        drinks[6] = new Pet("(Can)펩시콜라 250ml", 900, 20);
        drinks[7] = new Pet("(Can)펩시콜라 Zero 라임슈가향 250ml", 900, 20);
        drinks[8] = new Tea("밀크커피", 400, 100);
        drinks[9] = new Tea("고급커피", 500, 100);
        drinks[10] = new Tea("율무차", 400, 100);
    
        while (flag) {
            System.out.println("어서오세요. 사용 목적을 선택해주세요.");
            System.out.println("1.음료 구매\t2.자판기 관리\t0.나가기");
            userChoice = sc.nextInt();
            if (userChoice == BUY) {
                showInfo(drinks);
                System.out.println("구매할 음료 번호를 입력하세요.");
                userChoice = sc.nextInt();
                if(drinks[userChoice - 1] != null) {
                    System.out.println("구매할 수량을 선택하세요");
    
                }else {
                    System.out.println("음료 번호를 잘못 입력하였습니다.");
                }
            } else if (userChoice == MANAGE) {
    
            } else if (userChoice == END) {
                System.out.println("자판기 사용을 종료합니다. 안녕히가십시오.");
                flag = false;
            } else {
                System.out.println("잘못입력하였습니다. 다시한번 입력해주세요");
            }
    
        }//end of while
    
    }// end of main
    
    static void showInfo(Drink[] drinks) {
        for(int i = 0; i < drinks.length; i++) {
            if(drinks[i] != null) {
            System.out.println("***" + (i + 1) + "번 음료***");
            drinks[i].showInfo();
            System.out.println("=====================");
            }
        }
    }
    

    }// end of class

    
    ```package ex02;
    
    public abstract class Drink {
    
        private String name;
        private int price;
    
        public Drink(String name, int price) {
            this.name = name;
            this.price = price;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getPrice() {
            return price;
        }
    
        public void setPrice(int price) {
            this.price = price;
        }
    
        protected abstract void showInfo();
    
    }
    
    package ex02;
    
    public class Pet extends Drink {
    
        private int amount;
    
        public Pet(String name, int price, int amount) {
            super(name, price);
            this.amount = amount;
        }
    
        public int getAmount() {
            return amount;
        }
    
        public void setAmount(int amount) {
            this.amount = amount;
        }
    
        public void takeOut(int amount) {
    
            this.amount -= amount;
            System.out.println();
        }
    
        @Override
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 수량: " + amount + "개");
        }
    
    }
    
    package ex02;
    
    public class Can extends Drink {
    
        private int amount;
    
        public Can(String name, int price, int amount) {
            super(name, price);
            this.amount = amount;
        }
    
        public int getAmount() {
            return amount;
        }
    
        public void setAmount(int amount) {
            this.amount = amount;
        }
    
        public void takeOut(int amount) {
    
            this.amount -= amount;
            System.out.println();
        }
    
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 수량: " + amount  + "개");
        }
    
    }
    package ex02;
    
    import java.util.Random;
    
    public class Tea extends Drink {
    
        private int capacity;
    
        public Tea(String name, int price, int capacity) {
            super(name, price);
            this.capacity = capacity;
        }
    
        public int getCapacity() {
            return capacity;
        }
    
        public void setCapacity(int capacity) {
            this.capacity = capacity;
        }
    
        static int teaSpoon() {
            Random random = new Random();
            int teaSpoon = random.nextInt(3) + 4;
            return 0;
        }
    
        public void takeOut(int amount) {
    
            for (int i = 0; i < amount; i++) {
                this.capacity -= teaSpoon();
                System.out.println();
            }
        }
        @Override
        public void showInfo() {
            System.out.println("음료명: " + this.getName());
            System.out.println("가격: " + this.getPrice());
            System.out.println("남은 믹스량: " + capacity + "g");
        }
    
    }// end of class
    
    package ex02;
    
    public class VendingMachine {
    
        private int id;
        private Drink[] drinks; // 들어있는 음료
        private int water; // Tea용 물
        private int money; // 수익금
    
        public VendingMachine(int id, Drink[] drinks, int water) {
    
            this.id = id;
            this.drinks = drinks;
            this.water = water;
    
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public Drink[] getDrinks() {
            return drinks;
        }
    
        public void setDrinks(Drink[] drinks) {
            this.drinks = drinks;
        }
    
        public int getWater() {
            return water;
        }
    
        public void setWater(int water) {
            this.water = water;
        }
    
        public int getMoney() {
            return money;
        }
    
        public void setMoney(int money) {
            this.money = money;
        }
    
        public void showInfo() {
            System.out.println("자판기 번호: " + id);
            System.out.println("잔여 생수: " + water + "ml");
            System.out.println("수익금: " + money);
            System.out.println("");
        }
    
    }