简体   繁体   English

在 ArrayList 内显示 ArrayList 的内容

[英]Display contents of ArrayList within an ArrayList

I currently am making a program to add in passengers for a flight to the program, with a first name, last name, and each weeks points.我目前正在制作一个程序,为该程序的航班添加乘客,包括名字、姓氏和每周积分。 Then I need to list each passengers points.然后我需要列出每个乘客的积分。 I intended for it to look something like this when outputting:我打算让它在输出时看起来像这样:

john doe 100 200 300 400约翰·多伊 100 200 300 400
jerry glock 123 400 345 200杰里·格洛克 123 400 345 200

etc. I cannot use a normal array or 2D array, because I do not know how many passengers there will be.等等。我不能使用普通数组或二维数组,因为我不知道会有多少乘客。

ArrayList <ArrayList<String>> passengers = new ArrayList <ArrayList<String>>();
ArrayList <String> firstName = new ArrayList <String> ();
ArrayList <String> lastName = new ArrayList <String> ();
ArrayList <String> weekOne = new ArrayList <String> ();
ArrayList <String> weekTwo = new ArrayList <String> ();
ArrayList <String> weekThree = new ArrayList <String> ();
ArrayList <String> weekFour = new ArrayList <String> ();
int numOfPas = 0;

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String firstN = firstNameInput.getText();
    firstName.add(firstN);
    String lastN = lastNameInput.getText();
    lastName.add(lastN);
    String week1 = weekOneInput.getText();
    weekOne.add(week1);
    String week2 = weekTwoInput.getText();
    weekTwo.add(week2);
    String week3 = weekThreeInput.getText();
    weekThree.add(week3);
    String week4 = weekFourInput.getText();
    weekFour.add(week4);
    listButton.setEnabled(true);
    numOfPas++;
}

private void listButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        String output = "";
        passengers.add(firstName);
        passengers.add(lastName);
        passengers.add(weekOne);
        passengers.add(weekTwo);
        passengers.add(weekThree);
        passengers.add(weekFour);
        for (int x=0; x<passengers.size(); x++) {
             for (int y=0; y< numOfPas; y++) {
                 output = output + " " + passengers.get(x).get(y);
             }
             output = output + "\n";
        }

        outputField.setText(output);
    }

The issue with this, is it displays something more like this:这个问题是它显示的更像是这样的:

john jerry约翰杰瑞
doe glock格洛克
100 123 100 123
200 400 200 400
300 345 300 345
400 200 400 200

I also need a way to find each weeks points for individual passengers, although I haven't gotten that far yet.我还需要一种方法来为个别乘客找到每周积分,尽管我还没有做到这一点。

I believe it should be:我认为应该是:

  for (int y=0; y< numOfPas; y++) {
        for (int x=0; x<passengers.size(); x++) {
             output = output + " " + passengers.get(x).get(y);
         }
         output = output + "\n";
    }

Q: Is this really the way the assignment was given: for each passenger, give one flight# for each of four weeks?问:这真的是分配任务的方式:为每位乘客,每四个星期分配一个航班#?

If so, consider something like this:如果是这样,请考虑这样的事情:

class Passenger {

  String firstName, lastName;
  String flights[4];

  public Passenger () {
    firstName = firstNameInput.getText();
    lastName = lastNameInput.getText();
    flights[0] = weekOneInput.getText();
    flights[1] = weekTwoInput.getText();
    flights[2] = weekThreeInput.getText();
    flights[3] = weekFourInput.getText();
    ...

Then your "add" button might do something like this:然后您的“添加”按钮可能会执行以下操作:

private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    passengersList.add(new Passenger());
    numOfPas++;
    listButton.setEnabled(true);
    ...

In the "real world", your "domain model" would probably consist of classes like "Customer" and "Flight".在“现实世界”中,您的“域模型”可能由“客户”和“飞行”等类组成。

A "Flight" would have something like "List passengers". “航班”将具有“列出乘客”之类的内容。

But for this assignment, you can probably do better than separate lists for "WeekOne", "WeekTwo", etc;)但是对于这个任务,你可能比单独列出“WeekOne”、“WeekTwo”等做得更好;)

You make a little mistake,it is simple to make it.你犯了一个小错误,做起来很简单。

Just change this line只需更改此行

 output = output + " " + passengers.get(x).get(y);

to:至:

output = output + " " + passenger.get(y).get(x);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM