편집 기록

편집 기록
  • 프로필 정영훈님의 편집
    날짜2018.05.14

    NullPointerException 오류에 관해 질문드립니다.


    package ayayay;
    import java.util.Scanner;
    
    public class Market {
        private static int array_length;
        private Scanner sc;
        private Drink[] drink;
        private Beer[] beer;
        private Fruit[] fruit;
        private Snack[] snack;
        private Ramen[] ramen; //클래스 배열 생성
    
    
        public Market() {
            sc=new Scanner(System.in);
            array_length=10;
            drink = new Drink[array_length];
            beer = new Beer[array_length];
            fruit = new Fruit[array_length];
            snack = new Snack[array_length];
            ramen = new Ramen[array_length];
        }
    
        void SetNamePriceProduct(String category, String...name) {
            int a,b,c,d,e; 
            if(category.toLowerCase().equals("drink")) {
                int n=name.length;
                for(int i=0;i<n;i++) {
                    System.out.println("name :"+ name[i]);
                    System.out.print("price : ");
                    a = sc.nextInt();
                    if(a>=500&&a<=2500) **drink[i] = new Drink(name[i],a);** //생성자로 값 넣기
    
                    else {
                        while(true) {
                        System.out.println("!!inpute error");
                    System.out.println("price :");
                    a = sc.nextInt();
                    if(a>=500&&a<=2500) {
                        drink[i] = new Drink(name[i],a); break;}
                    }
                        }
                }
            }
    
    }//void setname 끝나는 곳.
    
    
        public void print(Fruit[] f, Beer[] b, Drink[] d, Ramen[] r, Snack[] s) {
            System.out.println("******************Product************");
            print(f);
            print(b);
            print(d);
            print(r);
            print(s);
            System.out.println("*************************************");
        }
    
        public Drink[] getD() {
    
            return drink;
        }
    
        public Beer[] getB() {
    
            return beer;
        }
    
        public Fruit[] getF() {
    
                return fruit;
    
            }
    
    
        private void print(Fruit[] f) {
            System.out.println("FRUIT :");
            for(int j=0;j<fruit.length;j++) {
            System.out.println("       "+"name :"+fruit[j].getName()+", price :"+fruit[j].getPrice());
            }       
        }
        private void print(Beer[] b) {
            System.out.println("BEER :");
            for(int j=0;j<beer.length;j++) {
                System.out.println("       "+"name :"+beer[j].getName()+", price :"+beer[j].getPrice());
            }
        }
        private void print(Drink[] d) {
            System.out.println("DRINK :");
            for(int j=0;j<drink.length;j++) {
                System.out.println("       "+"name :"+drink[j].getName()+", price :"+drink[j].getPrice());
            }
        }
    
    
    
    
    --------------------------------------------------------------
    public class Test {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Market m= new Market();
            m.SetNamePriceProduct("DRInk", "Coke","Sprite","welchs","delmonte","cider","fanta");
            m.SetNamePriceProduct("RAmen", "sin","samyang","jin","6gyejang");
            m.SetNamePriceProduct("FrUit", "apple","mango","kiwi","banana","watermelon","melon","orange");
            m.SetNamePriceProduct("beEr", "cloud","hite","cass");
            m.SetNamePriceProduct("sNaCK", "jjanggu");
            m.print(m.getF(), m.getB(), m.getD(), m.getR(), m.getS());
        }
    
    }
    

    다른부분은 내용만 똑같은거라 짤랐고요. 중간에 setnameprice 메소드에서 drink[i] = new Drink(name[i],a); 이 내용이 있는데요 여기서 생성자 만들어서 객체를 생성한 것 아닌가요? 찾아보니까 nullpointerexception이 배열은 있는데 객체가 생성이 안된다고 하더라고요. 근데 객체생성이 안됬다고하니 답답합니다 ㅠㅠㅠ

  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.05.13

    NullPointerException 오류에 관해 질문드립니다.


    package ayayay; import java.util.Scanner;

    public class Market { private static int array_length; private Scanner sc; private Drink[] drink; private Beer[] beer; private Fruit[] fruit; private Snack[] snack; private Ramen[] ramen; //클래스 배열 생성

    public Market() {
        sc=new Scanner(System.in);
        array_length=10;
        drink = new Drink[array_length];
        beer = new Beer[array_length];
        fruit = new Fruit[array_length];
        snack = new Snack[array_length];
        ramen = new Ramen[array_length];
    }
    
    void SetNamePriceProduct(String category, String...name) {
        int a,b,c,d,e; 
        if(category.toLowerCase().equals("drink")) {
            int n=name.length;
            for(int i=0;i<n;i++) {
                System.out.println("name :"+ name[i]);
                System.out.print("price : ");
                a = sc.nextInt();
                if(a>=500&&a<=2500) **drink[i] = new Drink(name[i],a);** //생성자로 값 넣기
    
                else {
                    while(true) {
                    System.out.println("!!inpute error");
                System.out.println("price :");
                a = sc.nextInt();
                if(a>=500&&a<=2500) {
                    drink[i] = new Drink(name[i],a); break;}
                }
                    }
            }
        }
    

    }//void setname 끝나는 곳.

    public void print(Fruit[] f, Beer[] b, Drink[] d, Ramen[] r, Snack[] s) {
        System.out.println("******************Product************");
        print(f);
        print(b);
        print(d);
        print(r);
        print(s);
        System.out.println("*************************************");
    }
    
    public Drink[] getD() {
    
        return drink;
    }
    
    public Beer[] getB() {
    
        return beer;
    }
    
    public Fruit[] getF() {
    
            return fruit;
    
        }
    
    
    private void print(Fruit[] f) {
        System.out.println("FRUIT :");
        for(int j=0;j<fruit.length;j++) {
        System.out.println("       "+"name :"+fruit[j].getName()+", price :"+fruit[j].getPrice());
        }       
    }
    private void print(Beer[] b) {
        System.out.println("BEER :");
        for(int j=0;j<beer.length;j++) {
            System.out.println("       "+"name :"+beer[j].getName()+", price :"+beer[j].getPrice());
        }
    }
    private void print(Drink[] d) {
        System.out.println("DRINK :");
        for(int j=0;j<drink.length;j++) {
            System.out.println("       "+"name :"+drink[j].getName()+", price :"+drink[j].getPrice());
        }
    }
    

    public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Market m= new Market();
        m.SetNamePriceProduct("DRInk", "Coke","Sprite","welchs","delmonte","cider","fanta");
        m.SetNamePriceProduct("RAmen", "sin","samyang","jin","6gyejang");
        m.SetNamePriceProduct("FrUit", "apple","mango","kiwi","banana","watermelon","melon","orange");
        m.SetNamePriceProduct("beEr", "cloud","hite","cass");
        m.SetNamePriceProduct("sNaCK", "jjanggu");
        m.print(m.getF(), m.getB(), m.getD(), m.getR(), m.getS());
    }
    

    }

    다른부분은 내용만 똑같은거라 짤랐고요. 중간에 setnameprice 메소드에서 drink[i] = new Drink(name[i],a); 이 내용이 있는데요 여기서 생성자 만들어서 객체를 생성한 것 아닌가요? 찾아보니까 nullpointerexception이 배열은 있는데 객체가 생성이 안된다고 하더라고요. 근데 객체생성이 안됬다고하니 답답합니다 ㅠㅠㅠ