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

조회수 368회

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

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

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

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("");
    }

}

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    VendingMachineProgram 클래스를 잘 보면 문법이 잘못됐습니다.

    int Drink[] drinks = new Drink[100]; 이렇게 작성하셨지요.
    int가 어디있나 못 찾겠으면, 조금만 윗줄을 보세요. int만 놓여있습니다.

    • 아 감사합니다. 변수 추가하려고 써두고 변수이름 고민하다 잠깐 딴짓했는데 써둔걸 깜빡했네요. 김지현 2023.2.12 20:18

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)