[英]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.