簡體   English   中英

在 ArrayList 內顯示 ArrayList 的內容

[英]Display contents of ArrayList within an ArrayList

我目前正在制作一個程序,為該程序的航班添加乘客,包括名字、姓氏和每周積分。 然后我需要列出每個乘客的積分。 我打算讓它在輸出時看起來像這樣:

約翰·多伊 100 200 300 400
傑里·格洛克 123 400 345 200

等等。我不能使用普通數組或二維數組,因為我不知道會有多少乘客。

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);
    }

這個問題是它顯示的更像是這樣的:

約翰傑瑞
格洛克
100 123
200 400
300 345
400 200

我還需要一種方法來為個別乘客找到每周積分,盡管我還沒有做到這一點。

我認為應該是:

  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";
    }

問:這真的是分配任務的方式:為每位乘客,每四個星期分配一個航班#?

如果是這樣,請考慮這樣的事情:

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();
    ...

然后您的“添加”按鈕可能會執行以下操作:

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

在“現實世界”中,您的“域模型”可能由“客戶”和“飛行”等類組成。

“航班”將具有“列出乘客”之類的內容。

但是對於這個任務,你可能比單獨列出“WeekOne”、“WeekTwo”等做得更好;)

你犯了一個小錯誤,做起來很簡單。

只需更改此行

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

至:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM