2015-11-18 129 views
1

我有一個菜單,使用do-while循環進行導航,基於整數選擇。其中一項選擇是在我的廣告資源中添加新的部分。當我添加它的工作部分,但然後我嘗試顯示它在菜單選項「顯示所有部分」(選擇4)和添加的部分不存在。爲什麼不包含包含新值的數組?通過用戶輸入更新數組

else if(selection == 3){ 
       System.out.println("--------------Individual Parts--------------"); 
       System.out.println("ID: " + "\t Name: " + "\tStock Level: " + "\tUnit Price: "); 
       Part p = new Part(); 
       p.printInv(); ------DOESN'T WORK HERE, AFTER ADDING NEW VALUES------ 
       System.out.println(""); 

} else if(selection == 4){ 
       Part p = new Part(); 
       System.out.println("Add name for new part"); 
       String n = sc.nextLine(); 
       p.addNameToInv(n); 
       System.out.print("Please allocate ID. The next free ID is: "); 
       p.findNextID(); 
       String n2 = sc.nextLine(); 
       p.addIDToInv(n2); 
       p.printInv(); // -----WORKS HERE----- 

      } else if(selection >=5){ 
       System.out.println("Invalid selection. Please try again."); 
       System.out.println(); 
       System.out.println(); 
      } 

    } while(selection != 0); 

實施printInv()方法

public void printInv(){ 
    for(int i=0; i<invName.length; i++){ 
     if(invName[i] != null){ 
      System.out.println(invID[i] + "\t " + invName[i] 
          + "\t " + invSL[i] + "\t\t " + invUP[i]); 
     } 
    } 
} 
+0

我們可以看到'printInv()'函數的實現嗎? – dan

+0

@丹西有任何答案幫助嗎?您可以標記答案以顯示解決您問題的其他人。 –

回答

2

的你需要的Part p創建保存if(selection == 4)能夠在if(selection == 3)以後顯示它。

你現在在if(selection == 3)做的是:

Part p = new Part(); //you create a new EMPTY part. 
p.printInv(); //works fine, but its your newly created empty part without values. 
+0

我將如何保存部分p在if(選擇== 4)? – dansey

+0

查看@IsuruJ他的答案,使用一個listparts數組,或者如果你只想保留一個,只需創建一個全局變量或一個類字段 –

0

您需要一種方式來引用保持您在創建的部件實例「如果(選擇== 3)」。

因此,您可以將其添加到像ArrayList或Map類型的數據結構HashMap中,該HashMap保留爲實例變量,然後通過此ArrayList/HashMap引用您創建的Part實例。

public class Menu { 

    private ArrayList<Part> listOfParts = new ArrayList<Part>(); 

    public void partAdditionAndDisplay(int selection) { 
     if (selection == 3) { 
      Part p = listOfParts.get(index); // some required index/can use a HashMap to refer from a key 
      p.printInv(); 
      System.out.println(""); 

     } else if (selection == 4) { 
      Part p = new Part(); 
      listOfParts.add(p); 
      p.printInv(); 

     } 
    } 
} 
相關問題