2013-10-07 68 views
1

我有點困惑添加對象到7個對象的數組。將對象添加到for循環中的數組。與設置和得到。

我有一個for循環,我想用3個參數添加一個item對象。我已經使用了set並獲得了這個。在for循環結束時,id像.add項目對象到數組列表。當我嘗試這樣做,我得到一個錯誤:

Exception in thread "main" java.lang.NullPointerException at item.add(item.java:88) at homework3main.main(homework3main.java:38)

有上線88項級和38主沒有錯誤標誌,所以我不知道如何改正。

public class item { 



public static int x = 0; 
public static String setName; 
public static double setPrice; 
public static int setPrioirty; 


public int priority=-1; 
public static double price; 
public static String name; 
private static item[] list; 



item(){ 
    this(-1,0, null); 
    priority=-1; 
    price=0; 
    name="No Name yet."; 


}// default constructor. 


public item(int i, double j, String k) { 
    setitem(i,j,k);//constructor with 3 arguments. 
} 

public void setitem (int i, double j, String k){// setting item with 3 attributes. 
    setPriority(i); 
    setPrice(j); 
    setName(k); 

} 

public void setName(String k) {//setting individual attributes in item. 

    // TODO Auto-generated method stub //page 378 
    name=k; 
    priority=-1; 
    price=0; 
} 


public void setPrice(double j) {//setting individual attributes in item. 
    // TODO Auto-generated method stub 
    if (j<0&&j>100){ 
     System.out.println("Error: price is too low or high"); 

    } 

    else 
     price=j; 

    } 

public void setPriority(int i) {//setting individual attributes in item. 
    // TODO Auto-generated method stub 
    priority =((i>=0&&i<7)?i:0); 
    } 


public double getPrice(){ 
    return price; 

} 
public String getName(){ 

    return name; 

} 
public double getPriority(){ 
    return priority; 

} 

// eclipse made me create this method when I wanted to "add an itemObject to the list" 
public static void add(item itemObject) { 

    System.out.println("Enter an item"+x); 
    if (x<7) 
    { 
     list[x]=itemObject; 
    System.out.println("Item added at index " + x); 

    x++; 
    } 








} 

    } 

---------------------------------主

public class homework3main extends item { 





public static void main(String[] args) { 


    item list[]=new item [7]; // array object 
    Scanner keyboard= new Scanner(System.in); 
    for(int x=0; x<list.length;x++){ 


     item itemObject=new item (setPrioirty,setPrice,setName); 
     //creating new object with 3 variables, name, price, priority 

     //list[x]=new item();// is this right? 
     System.out.println("Enter an item you want to add to your list"); 
     list[x].setName=keyboard.next(); 

     System.out.println("Enter a price"); 
     Scanner pricedouble= new Scanner(System.in); 
     list[x].setPrice=pricedouble.nextDouble(); 

     System.out.println("Enter the priority of the item"); 
     Scanner priorityint= new Scanner(System.in); 
     list[x].setPrioirty=priorityint.nextInt(); 

     //item itemObject=new item (setPrioirty,setPrice,setName); 

     list[x].add(itemObject); 


    } 
+0

你有一個數組,但是你沒有創建它的元素,並且你正試圖調用它們的方法。 –

+5

請遵循適當的Java命名約定。類名應以大寫字母開頭。 –

回答

2

main方法是初始化item的陣列的錯誤位置。這裏,

item list[]=new item [7]; 

你已經聲明瞭一個本地數組,它本身被稱爲list。相反,在其構造函數中或作爲聲明的一部分初始化listitem實例變量。

此外,我沒有看到任何理由爲什麼您的類與main方法,homework3main,應擴展item。另外,Java中的命名約定是命名以大寫字母開始的類,例如, ItemHomework3Main

+0

我只是在嘗試不同的事情來實現它,這就是爲什麼我放置擴展項目。我不認爲擴展項目在主要工作,但無論如何嘗試。 –

+0

謝謝,我在Item類中將它添加爲靜態,並將其添加到每個索引。在Main中擴展Item還允許我在main中使用list而不創建局部變量。 –

相關問題