0

first time in stackoverflow im getting this error and I'm not sure why

Console

Welcome to Retail Review Systems
Enter your id: 100
Enter your password: pass1
Welcome Kathy Hochul , please choose a product to review.
we have the following products for review.
Exception in thread "main"
1. Dell Elite Desk
2. HP HP Desk
3. Motorola Motorola Desk
4. Samsung Samsung Desk
5. Apple Apple Desk
java.lang.NullPointerException: Cannot invoke "pkgRetailReview2.Product.getManufacturer()" because "this.electronics[i]" is null
    at prjRetailReview2/pkgRetailReview2.RetailReview.displayProduct(RetailReview.java:113)
    at prjRetailReview2/pkgRetailReview2.RetailReview.createReview(RetailReview.java:92)
    at prjRetailReview2/pkgRetailReview2.RetailReviewSystem.main(RetailReviewSystem.java:15)

Products class

public class Product {

    private int upc;
    private String pname;
    private String manufacturer;
    private float price;
    private String desc;
    private short year;
    
    
    public Product() {
        super();
        this.upc = 0;
        this.pname = "";
        this.manufacturer = "";
        this.price = 0;
        this.desc = "";
        this.year = 0;
    }
    
    // constructor
    public Product(int upc, String pname, String manufacturer, float price, String desc, short year) {
        super();
        this.upc = upc;
        this.pname = pname;
        this.manufacturer = manufacturer;
        this.price = price;
        this.desc = desc;
        this.year = year;
    }
    
    
    public int getUpc() {
        return upc;
    }
    public void setUpc(int upc) {
        this.upc = upc;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public String getManufacturer() {
        return manufacturer;
    }
    public void setManufacturer(String manufacturer) {
        this.manufacturer = manufacturer;
    }
    public float getPrice() {
        return price;
    }
    public void setPrice(float price) {
        this.price = price;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public short getYear() {
        return year;
    }
    public void setYear(short year) {
        this.year = year;
    }

}

RETALREVIEW.java:113

public class RetailReview {
    
    Product electronics[]; //arrays have fixed sizes
    Reviewer customers[];  
    ArrayList reviews;    // array list do  not have fixed sizes
    Scanner keyboard;
    short reviewnum;
    int selreviewer;
    
    /******************* constructor *******************/
    
    RetailReview()
    {
        electronics = new Product[10];
        customers = new Reviewer[10];
        reviews = new ArrayList<Review>();
        keyboard = new Scanner(System.in);
        reviewnum = 1000;
        selreviewer = -1;
        
    }
    
    /****************end constructor********************/
    
    
    /*****************Load Data*************************/
    
        void loadData()
        {
        //Working Variables
        short year = 2019, rid = 100;
        
        //Product Info
        electronics[0] = new Product(100, "Elite Desk", "Dell", 400.00f, "Desktop Computer", year);
        electronics[1] = new Product(200, "HP Desk", "HP", 400.00f, "Desktop Computer", year);  
        electronics[2] = new Product(300, "Motorola Desk", "Motorola", 400.00f, "Desktop Computer", year);
        electronics[3] = new Product(400, "Samsung Desk", "Samsung", 400.00f, "Desktop Computer", year);
        electronics[4] = new Product(500, "Apple Desk", "Apple", 400.00f, "Desktop Computer", year);
            
        //Reviewer
        customers[0] = new Reviewer (rid, "Kathy Hochul", 12201, "pass1");
        customers[1] = new Reviewer (++rid, "Joe Biden", 12201, "pass2");
        customers[2] = new Reviewer (++rid, "Kamala Harris", 12201, "pass3");
        
        }
        /***************** End LoadData*************************/   


        /**********************Login*************************/
        
        boolean login()
        {   String entid = "", entpass = "";
            int numattempts = 0;
            System.out.println("Welcome to Retail Review Systems");
            do
            {   // get review id and pass
                System.out.print("Enter your id: ");
                entid = keyboard.next();
                int rid = Integer.parseInt(entid);
                System.out.print("Enter your password: ");
                entpass = keyboard.next();
                
                // Search the array for the reviewer
                for (int i = 0; i< 3; i++)
                { if (rid == customers[i].getRid() && entpass.equals(customers[i].getRpwd()))
                    {   selreviewer =i;
                        return true;
                    
                    }
                
                }
                numattempts++;
                System.out.println("Invalid password");
            }while(numattempts < 3);
                
            
            return false;
            
        }   
        /**************************createReview****************/
        
        void createReview()
        {   short entrating = 0;
            String entreview = "";
            int selproduct = 0;
            
            //capture Review
            System.out.println("Welcome " + customers[selreviewer].getFullname() + " , please choose a product to review.");
            displayProduct();
            System.out.println("Which product would you like to review :(1-5);");
            selproduct = keyboard.nextInt();
            
            System.out.println("What is the rating (1-5 stars)?");
            entrating = keyboard.nextShort();
            
            System.out.println("What is the review");
            entreview = keyboard.next();
            
            // add the review to the list
            reviewnum++;
            Review newreview = new Review(reviewnum ,"02/25/2022", customers[selreviewer].getRid(), entrating, entreview, electronics[selproduct -1].getUpc()  );

        }
        /*******************************Display Products**************************/
        void displayProduct()
        {
            System.out.println("we have the following products for review.");
            
            for (int i=0; 1< electronics.length; i++)
            {System.out.println((i+1) + ". " + electronics[i].getManufacturer() + " " + electronics[i].getPname());
            }
        }
        /****************************end Display Products*************************/
        
        /*******************************Display Review**************************/
        void displayReview()
        {}
        
}

RetailReviewSystem.java:15

public class RetailReviewSystem {

    public static void main(String[] args) {
        
        RetailReview amazon = new RetailReview();
        boolean isValidLogin = false;
        
        amazon.loadData();
        isValidLogin = amazon.login();
        
        if(!isValidLogin)
                System.out.println("Number of login attempts exceeded, program terminated.");
        amazon.createReview();
    
    }

}
Luke Woodward
  • 60,283
  • 16
  • 83
  • 102

0 Answers0