문제) java.lang.NullPointerException 에러 원인 설명 및 해답을 알려주세요!
기껏 테스트하고 올릴려고 했더니, 일이 들어와서 처리하고 보니 먼저 답변이 달렸다..
java.lang.NullPointerException 에러 원인 설명 및 해답을 알려주세요!
java.lang.NullPointerException 에러 원인 설명 및 해답을 알려주세요!
먼저 달린 답변)
import java.util.Scanner;
class Food {
String name;
int price;
}
public class END_TEST1 {
public static void main(String[] args) {
Scanner scanf = new Scanner(System.in);
System.out.print("주문하고 싶은 음식의 수 >> ");
int limit = scanf.nextInt();
Food food[]= new Food[limit];
System.out.println("주문하고 싶은 음식의 수는 "+food.length+"개 입니다.");
for(int i=0; i<food.length; i++){
System.out.print((i+1)+"번째 음식의 이름 >> ");
food[i] = new Food(); // 에러의 원인은 배열은 생성했으나 객체를 배열안에 넣지 않았기 때문입니다.
food[i].name = scanf.next();
System.out.print((i+1)+"번째 음식의 가격 >> ");
food[i].price = scanf.nextInt();
}
}
}
내 답변)
배열에 객체를 생성해서 처리해야 합니다.
그리고 배열당 값이 2개 이니까 2차원 배열을 써주는게 좋을것 같습니다.
아래 빨간부분들을 참고하세요.
1. CLASS
import java.util.Scanner;
public class END_TEST1 {
public static void main(String[] args){
Scanner scanf = new Scanner(System.in);
System.out.print("주문하고 싶은 음식의 수 >> ");
int limit = scanf.nextInt();
Food food[][] = new Food[limit][2];
System.out.println("주문하고 싶은 음식의 수는 " + food.length + "개 입니다.");
for(int i = 0; i < food.length; i++){
System.out.print((i + 1) + "번째 음식의 이름 >> ");
food[i][0] = new Food();
food[i][0].name = scanf.next();
System.out.print((i + 1) + "번째 음식의 가격 >> ");
food[i][1] = new Food();
food[i][1].price = scanf.nextInt();
}
System.out.println();
for(int i = 0; i < food.length; i++){
System.out.println((i + 1) + "번 음식이름 : " + food[i][0].name + " / 가격 : " + food[i][1].price);
}
}
}
class Food{
String name;
int price;
}
2. RUN
주문하고 싶은 음식의 수 >> 2
주문하고 싶은 음식의 수는 2개 입니다.
1번째 음식의 이름 >> a
1번째 음식의 가격 >> 1000
2번째 음식의 이름 >> b
2번째 음식의 가격 >> 2000
1번 음식이름 : a / 가격 : 1000
2번 음식이름 : b / 가격 : 2000
쩝..
'course > 지식인' 카테고리의 다른 글
[자바] 문자열의 일정부분을 기호 등으로 대체.. (0) | 2016.09.28 |
---|---|
[자바] 문자열에서 특별한 조건범위 내의 모든 값을 출력. (0) | 2016.08.25 |
[JSP] 연도별로 구별된 게시판 목록보기 (0) | 2016.07.08 |