Java 개인 연습 중 배열에서 오류가 났는데 해결 방법을 모르겠습니다.
조회수 154회
맨 위가 메인함수용 클래스(오류난 곳)이고
아래에 클래스들이 참조타입용 클래스들입니다.
이미지 캡쳐한 걸 여기에 올리고싶은데 잘 안올라가서 글로 써보자면
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("");
}
}
댓글 입력