2014-07-19 42 views
-2

我剛開始研究自動售貨機程序,但在這裏遇到了問題。產出不像預期的那樣。這是我的代碼。ArrayList錯誤的輸出

自動販賣機:

import java.util.*; 

public class VendingMachine { 


    static List<ShowMenu> menu = new ArrayList<ShowMenu>(); 

    public static void main(String [] args){ 


    System.out.println("Please choose from the menu below:"); 
    for(int i=0; i<9; i++){ 

     String[] item = {"Water", "Coke" , "Diet Coke", "Iced Tea", "Swiss Chocolate", "Candy", "Chips", "Bubble Gum", "Turkish Delight"}; 
     int[] count = {10,10,10,10,10,10,10,10,10}; 
     double[] price = {0.75,1.20,1.20,1.00,1.50,0.95,1.10,0.50,1.20}; 


     ShowMenu items = new ShowMenu(item, count, price); 
     menu.add(items); 

    } 

    int k=1; 

    for(ShowMenu item: menu){ 
     System.out.print(k +"."); 
     k = k + 1; 
     System.out.println(item); 
    } 
    } 
    } 

ShowMenu:

import java.util.*; 

    public class ShowMenu { 

    public String[] item; 
    public int[] count; 
    public double[] price; 

    public ShowMenu(String[] items, int[] count, double[] price){ 

     this.item = items; 
     this.count = count; 
     this.price = price; 

    } 


    public String toString(){ 
    return " " + item + " " + "$" + price; 
    } 
    } 

這是下面的輸出。我期待以下列價格列出價格,例如 1.水價爲0.75美元,但它顯示了另一件事。

Please choose from the menu below: 
1. [Ljava.lang.String;@5f47ff11 $[[email protected] 
2. [Ljava.lang.String;@574f7121 $[[email protected] 
3. [Ljava.lang.String;@5e7d093a $[[email protected] 
4. [Ljava.lang.String;@2ab6994f $[[email protected] 
5. [Ljava.lang.String;@324a897c $[[email protected] 
6. [Ljava.lang.String;@6f9702b1 $[[email protected] 
7. [Ljava.lang.String;@226946d2 $[[email protected] 
8. [Ljava.lang.String;@173a0067 $[[email protected] 
9. [Ljava.lang.String;@4ad9d6ae $[[email protected] 

任何幫助.. !!

+0

我會使用一個相關地圖。會清理你的代碼一些。 – NightSkyCode

+0

您需要正確覆蓋'toString()'方法。 – TheLostMind

回答

1

您正在對產品的整個列表進行循環,而不是每個產品。這是你的代碼固定:

import java.util.*; 

public class VendingMachine 
{ 

    static List<ShowMenu> menu = new ArrayList<ShowMenu>(); 

    public static void main(String[] args) 
    { 

     System.out.println("Please choose from the menu below:"); 
     for (int i = 0; i < 9; i++) 
     { 

      String[] item = {"Water", "Coke", "Diet Coke", "Iced Tea", "Swiss Chocolate", "Candy", "Chips", 
          "Bubble Gum", "Turkish Delight"}; 
      int[] count = {10, 10, 10, 10, 10, 10, 10, 10, 10}; 
      double[] price = {0.75, 1.20, 1.20, 1.00, 1.50, 0.95, 1.10, 0.50, 1.20}; 

      ShowMenu items = new ShowMenu(item[i], count[i], price[i]); 
      menu.add(items); 

     } 

     int k = 1; 

     for (ShowMenu item : menu) 
     { 
      System.out.print(k + "."); 
      k = k + 1; 
      System.out.println(item); 
     } 
    } 
} 




import java.util.*; 

public class ShowMenu 
{ 

    public String item; 
    public int count; 
    public double price; 

    public ShowMenu(String items, int count, double price) 
    { 

     this.item = items; 
     this.count = count; 
     this.price = price; 

    } 

    public String toString() 
    { 
     return " " + item + " " + "$" + price; 
    } 
} 

輸出是:

Please choose from the menu below: 
1. Water $0.75 
2. Coke $1.2 
3. Diet Coke $1.2 
4. Iced Tea $1.0 
5. Swiss Chocolate $1.5 
6. Candy $0.95 
7. Chips $1.1 
8. Bubble Gum $0.5 
9. Turkish Delight $1.2 
+0

明白了,我是新來的java,但你節省了我的時間。 C – Kaka

0

return " " + item + " " + "$" + price;

當您返回項作爲一個字符串,你得到的[LJava.lang...符號。使用Arrays.toString(item)

+0

如何使用Array.toString?它是在一個toString()..? – Kaka