2016-03-06 24 views
0

所以,我試圖將存儲在2個ArrayLists中的數據顯示到一個jTextArea中。第一個ArrayList包含一個酒吧的位置,名字,以及是否有現場音樂和食品服務。第二個酒吧包含酒的類型和每個酒的相應數量。顯示2個ArrayList到一個jTextArea一個接一個地多次取決於輸入的數據

我試圖得到它顯示是這樣的:

的(barLocation)條被命名爲:(barName)

現場音樂:(true或false)

食品服務:(true或false)

(這是第一個ArrayList中,接着是第二個)

伏特加:(量)

威士忌:(量)

房間:(量)

晶晶:(量)

白蘭地:(量)

這個偉大的工程,如果我進入一個酒吧。如果我輸入兩個或更多,我會得到一個輸入不同組合的長列表。因此,如果我輸入兩個酒吧的酒量,我會得到20-30個不同組合的不同組合,而不僅僅是上述格式中的兩個。

這是我用來顯示數據的代碼段:

for(int i=0; i<bars.size(); i++) 
     { 
      for(int j=0; j<liquors.size(); j++) 
      { 
       jTextAreaDisplay.append(jTextAreaDisplay.getText() 
         + bars.get(i) + liquors.get(j) + "\n\n"); 
      } 
     } 

現在我知道我在做for循環出毛病了,我嘗試了不同的做法,但我卡住了。任何幫助將不勝感激。

UPDATE

我有兩個班一個酒吧和一個白酒。酒的數量是庫存數量,所以:伏特加:20例如是20瓶。很抱歉對於這個誤會。

代碼類:

class Bar 
{ 
    String barLoc, barName; 
    boolean music, food; 

    public Bar(String l, String n, boolean m, boolean f) 
    { 
     this.barLoc = l; 
     this.barName = n; 
     this.music = m; 
     this.food = f; 
    } 

    @Override 
    public String toString() 
    { 
     return "The " + barLoc + " bar is named: " + barName + "\nLive music: " 
       + music + "\nFood Service: " + food; 
    } 
} 

class Liquor 
{ 
    //String[] liquor = {"Vodka", "Whiskey", "Rum", "Gin", "Brandy"}; 
    String vodka, whiskey, rum, gin, brandy; 
    int vCount, wCount, rCount, gCount, bCount; 

    public Liquor(String vodka, String whiskey, String rum, String gin, 
      String brandy, int v, int w, int r, int g, int b) 
    { 
     this.vodka = vodka; 
     this.whiskey = whiskey; 
     this.rum = rum; 
     this.gin = gin; 
     this.brandy = brandy; 
     this.vCount = v; 
     this.wCount = w; 
     this.rCount = r; 
     this.gCount = g; 
     this.bCount = b; 
    } 


    @Override 
    public String toString() 
    { 
     return "\nLiquor currently in stock:\n" + vodka + ": " + vCount + "\n" + 
       whiskey + ": " + wCount + "\n" + rum + ": " + rCount + "\n" + 
       gin + ": " + gCount + "\n" + brandy + ": " + bCount; 
    } 
} 
+0

[如何使用表格](http://docs.oracle.com/javase/tutorial/uiswing/components/table.html) - 基本上你在問什麼,只是簡單 – MadProgrammer

+0

你也可以考慮使用'地圖「,所以你可以將飲料的List列表映射到單個欄中,詳情請參閱[Collections Trail](http://docs.oracle.com/javase/tutorial/collections/) – MadProgrammer

+0

如果你真的想要使用'JTextArea',然後你可以看看[Formatted Strings](http://www.homeandlearn.co.uk/java/java_formatted_strings.html)或者使用'JEditorPane'並生成一個基於HTML的表 – MadProgrammer

回答

1

你讓每一個組合,因爲你要循環各白酒,每欄。

我建議你重構你的代碼,使酒的列表成爲酒吧的一個屬性。

for(int i=0; i<bars.size(); i++) 
     { 
       jTextAreaDisplay.append(jTextAreaDisplay.getText() 
         + bars.get(i).toString() + bars.get(i).getLiquor.toString() + "\n\n"); 

     } 

現在你得到了每一個酒吧,每個酒的價格是添加爲該酒吧。

酒吧類將具有以下實施

public class Bar { 
//your other code 
private Liqour liqour; 

public Liqour getLiqour(){ return liqour;} 
// your other code 
} 

當您爲酒吧創造Liqour,一定要對其進行初始化。 Liqour不是一個列表,而是一個包含屬性的對象,所以你不需要迭代它。

+0

getLiquors.size()是我創建的一種不同的方法嗎? – diggz

+0

否,因爲size()是ArrayLists的標準方法。 – Jonas

+0

對不起,我的意思是getLiquors – diggz

相關問題