Reputation: 25
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
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
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