根据输入的数据,将多个ArrayLists一个接一个地显示到jTextArea中

时间:2016-03-06 23:03:08

标签: java arraylist

所以,我试图将存储在2个ArrayLists中的数据显示到jTextArea中。第一个ArrayList包含一个栏的位置,名称,以及是否有现场音乐和美食服务。第二个条包含液体的类型和每个的相应量。

我试图让它显示如下:

  

(barLocation)栏名为:(barName)

     

现场音乐:(真或假)

     

食品服务:(真或假)

     

(这是第一个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循环中做错了,我尝试了不同的方法,但是我被卡住了。任何帮助将不胜感激。

更新

我有两个班级,一个酒吧,一个酒吧。酒的量是库存量,因此:伏特加: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;
    }
}

1 个答案:

答案 0 :(得分:1)

你得到了所有的组合,因为你要为每个酒吧循环每一种酒。

我建议您重构代码,以便酒类清单成为酒吧的财产。

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

        }

现在,您可以获得每个酒吧,每种酒都添加了该酒吧的价格。

bar类将具有以下实现

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

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

为条形图创建Liqour时,请确保初始化它。 Liqour不是列表,而是具有属性的对象,因此您不需要迭代它。