2012-12-02 46 views
2

以下是我目前使用的代碼。這是錯誤,我得到了58行當我將它傳遞給一個方法時,如何讓我的用戶輸入訪問我的ArrayList

incompatible types required: ArrayList found:
VendProduct

(Alt-Enter組合顯示提示)

//自動售貨機分發多個產品

package newvendingmachine; 

import java.util.ArrayList; 
import java.util.Scanner; 

//Tony Moore 

public class NewVendingMachine{ 
    //Set class data 
    static String[] product = {"Chips", "M&Ms", "Peanuts", "Popcorn", "Snickers"}; 
    static Float[] cost = {.50f, .75f, .75f, .75f, .90f}; 
    static Integer[] inventory = {20, 20, 20, 20, 20}; 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     ArrayList<VendProduct> vp = new ArrayList<>(); 
     for (int idx=0; idx<product.length; idx++) { 
      vp.add(new VendProduct()); 
     } 

     //Accept user input 
     Scanner input = new Scanner(System.in); 
     int userInput; 

     while (true) { 
      // Display menu graphics 

      System.out.println(" Options: Press your selection then press enter "); 
      System.out.println(" 1. "+product[0]+" "); 
      System.out.println(" 2. "+product[1]+" "); 
      System.out.println(" 3. "+product[2]+" "); 
      System.out.println(" 4. "+product[3]+" "); 
      System.out.println(" 5. "+product[4]+" "); 
      System.out.println(" 6. Quit "); 


      userInput = input.nextInt(); 

      if (userInput <1 || userInput >6) { 
       System.out.println("Please make a vaild selection");  
      } 

      if (userInput >=1 || userInput <=6) { 
       vp = (VendProduct)vp.get(userInput-1); 
       vp.buyProduct();   
      } 

      if (userInput == 6) { 
       System.out.println("Thanks, and come back soon"); 
       break; 
      } 
     } 
    } 
} 
+1

這是第58行嗎?我不想數;) – cruxi

+0

第58行是vp =(VendProduct)vp.get(userInput -1); – Tony

回答

0

vp = (VendProduct)vp.get(userInput-1);

vp是一個VendProduct的ArrayList,但您試圖將其設置爲僅一個VendProduct ...

您應該創建類型VendProduct的變量和使用,就像這樣:

VendProduct product = vp.get(userInput-1); 
product.buyProduct(); 

你也可以做vp.get(userInput-1).buyProduct();直接一行。這取決於你。使用兩行代碼通常會使代碼更清晰,更易於閱讀。

+0

感謝您的協助。我給你的建議一個嘗試,但我收到以下錯誤:線程「主」異常java.lang.NullPointerException \t at newvendingmachine2.NewVendingMachine2.main(NewVendingMachine2.java:56)buyProduct是另一個名爲VendFunctions的類,並且是public void buyProduct(){ System.out.println(product); } – Tony

+0

@Tony好吧,我不能幫助你解決這個問題,而不會看到更多的代碼。特別是'VendFunctions'和'VendProduct'類。 –

+0

我仍然在這裏學習界面。我很樂意提供代碼。我必須已經完成任務,但我仍然想知道我做錯了什麼。 – Tony

相關問題