有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将2个ArrayList一个接一个地显示到jTextArea中,根据输入的数据多次显示

所以,我试图将存储在两个ArrayList中的数据显示到一个jTextArea中。第一个ArrayList包含酒吧的位置、名称,以及是否有现场音乐和餐饮服务。第二个酒吧里有酒的种类和相应的数量

我试图让它显示如下:

The (barLocation) bar is named: (barName)

Live music: (true or false)

Food service: (true or false)

(That's the first ArrayList, followed by the second)

Vodka: (amount)

Whiskey: (amount)

Rum: (amount)

Gin: (amount)

Brandy: (amount)

如果我进入一个酒吧,效果很好。如果我输入两个或更多,就会得到一长串以不同组合输入的数据。因此,如果我输入两个酒吧的酒量,我会得到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) 个答案

  1. # 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不是一个列表,而是一个具有属性的对象,因此不需要迭代它