2013-08-04 56 views
0

所以我一直在研究我的程序,第一次在java中使用GUI。我想,我所擁有的一切是怎麼應該是,不過是給我一個錯誤:在NetBeans中試圖告訴我這個錯誤是什麼?

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) 

我不知道到底是什麼我必須做的,我一直試圖修復它,但我不能。

如果您需要更多信息來找出問題所在,請告訴我。

編輯(從評論複製)

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

這是GUIProgram類我建立。

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); 
     }  
    } 
} 

我只是想爲這個數組構建一個GUI。

+0

有可能宣佈的東西,但你忘了最初它,嘗試發佈兩個類的簡單。 – Azad

回答

2

它說有一個叫GUIProgram.java源文件,它的第41個線對null參考一些方法調用

通過

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

你宣佈,你將有產品的數組,你現在有space for table.lengh產品列表

所有這些參考文獻仍然是null,您需要初始化每個產品

和這樣做

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

好的,這是我對這些行: 「產品[]數組=新產品[table.length]; 浮子總= 0; 浮子費= 0; 爲(產品號碼:陣列) { total + = p.getTotal(); fee + = p.getRestockingFee(); }「 我認爲這很好。我保留了來自第三類電話產品的信息。該代碼甚至沒有提醒我任何問題。 – Mandygir

+0

呃...我不知道如何在評論窗口中顯示部分代碼。 – Mandygir

+0

在你的問題和我的回答中檢查更新 –

1

它看起來像您使用的構造函數中的一個變量,你已經初始化之前。

隨便舉個例子:

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 
相關問題