Mandygir
Mandygir

Reputation: 25

What is this error trying to tell me in NetBeans?

So I've been working on my program, using GUI for the first time in java. I think I have everything how it supposed to be, but is giving me one error:

Exception in thread "main" java.lang.NullPointerException
    at GUIProgram.<init>(GUIProgram.java:41)
    at Inventory.main(Inventory.java:12)
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)

I don't know what exactly I have to do, I keep trying to fix it, but I can't.

If you need more information to find out what is wrong, please let me know.

Edit (copied from comment)

Product[] array = new Product[table.length]; 
float total = 0; float fee = 0; 
for(Product p: array) { 
  total += p.getTotal(); 
  fee += p.getRestockingFee();
}

This is the GUIProgram class I am building.

    import javax.swing.*;
import java.awt.*;

public class GUIProgram extends JFrame
{

     public GUIProgram()
     {
        super("Welcome to the Inventory Program");

        setLayout(new FlowLayout());

        String[] columnNames = {"Item", "Item No.", "Unit", "Price"};


        Product[] table = new Product[5];

        table[0] = new Product("chocolate", 1023, 124, 1.50f);
        table[1] = new Product("ice cream", 1543, 170, 3.35f);
        table[2] = new Product("milk", 1265, 230, 2.40f);
        table[3] = new Product("orange juice", 1653, 199, 0.60f);
        table[4] = new Product("cereal", 1534, 176, 3.50f);

        for (int i = 0; i < table.length; i++)
        {
         JTextField textfield1 = new JTextField(table.length);
         add(textfield1);

           float total = 0;
           float fee = 0;

           for(Product p: table)
           {
                 total += p.getTotal();
                 fee += p.getRestockingFee();

            }

           JTextField textfield2 = new JTextField(table.length);
           textfield2 = new JTextField(String.format("The total value of the Fruits Inventory is: %.2f", total));
           add(textfield2);

           JTextField textfield3 = new JTextField(table.length);
           textfield3 = new JTextField(String.format("The total restocking fee is: %.2f", fee));
           add(textfield3);
         }     
     }  
}

I'm just trying to build a GUI for this array.

Upvotes: 0

Views: 135

Answers (2)

Jigar Joshi
Jigar Joshi

Reputation: 240966

It says there is a source file called GUIProgram.java, its 41th line has some method call on null reference

By

Product[] array = new Product[table.length]; 

You declared that you will have an array of Product and you now have space for table.lengh Product references in array

all those references are still null , You need to initialize each product

and to do so

for(Product p: array) { 
  // initialization
  p = new Product();
  total += p.getTotal(); 
  fee += p.getRestockingFee();
}

Upvotes: 2

Zac Blazic
Zac Blazic

Reputation: 607

It looks like you are using a variable inside your constructor before you have initialized it.

Random example:

Button runButton; //declared, but not initialized
button.SetColor(0, 0, 0); //calling the SetColor method on the uninitialized variable will cause it to go bang and give you a NullPointerException

Upvotes: 1

Related Questions