我正在尝试创建一个程序来生成机票,然后它会询问用户是否想查看乘客列表。
我遇到的困难是,每个用户输入详细信息后,他们都必须添加到乘客列表中。 因此,如果用户 1 输入他的详细信息,并且必须询问他们是否想要查看乘客列表(到目前为止,乘客列表下只有一条记录),那么当用户 2 输入他的详细信息时,它必须询问用户是否想要查看乘客列表。乘客列表和 User2 详细信息必须添加到乘客列表中(因此乘客列表下将有 2 条记录),依此类推。
请协助。
public class Question12 {
public static void main(String[] args) {
double random = Math.random()* 69 + 1;
String q;
Scanner in = new Scanner(System.in);
String[][] PlaneTicket = new String[3][3];
for (int row = 0; row < 67; row++) {
System.out.print("Enter name:");
PlaneTicket[row][0] = in.next();
System.out.print("Enter surname: ");
PlaneTicket[row][1] = in.next();
System.out.print("Enter a ID: ");
PlaneTicket[row][2] = in.next();
System.out.println("************Airport**********");
System.out.println("Seat number: " + Math.round(random));
System.out.println("Name: " + PlaneTicket[row][0]);
System.out.println("Surname: " + PlaneTicket[row][1]);
System.out.println("ID: " + PlaneTicket[row][2]);
System.out.println("*****************************");
System.out.println("Do you want to view the passanger list: " + "(Yes/No)");
q = in.next();
if ("Yes".equals(q)) {
System.out.println("Name Surname ID Seat Number");
System.out.println("----------------------------------------");
System.out.println(PlaneTicket[row][0]+" "+PlaneTicket[row][1]+" "+PlaneTicket[row][2]+ " "+ Math.round(random));
最佳答案
如果您只想打印到目前为止输入的所有值,您可以这样做:
System.out.println("Name Surname ID Seat Number");
System.out.println("----------------------------------------");
for (int k = 0; k <= row; k++) {
System.out.println(PlaneTicket[k][0] + " " + PlaneTicket[k][1] + " " + PlaneTicket[k][2] + " " + Math.round(random));
}
这能回答你的问题吗?
一些评论:
- 您必须修复数组大小(如评论中所述):
String[][] PlaneTicket = new String[67][3];
- 您应该创建一个类
PassengerTicket
,这将有助于使您的代码更具可读性(并且更加面向对象) - 您应该重新设计代码,以利用不同操作的方法(添加、打印……)
- 您的输出应该被格式化(例如,使用
String.format
) - 您应该看看
Collections
,这将使您的代码更具可读性并且可能更易于维护,即 https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html , https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
这是您的主要方法,并进行了一些修复,如上所述,请进行一些重新设计(请参阅我的评论):
public static void main(String[] args) {
final int maxPassengers = 67;
double random = Math.random() * 69 + 1;
String q;
Scanner in = new Scanner(System.in);
String[][] PlaneTicket = new String[maxPassengers][4];
for (int row = 0; row < maxPassengers; row++) {
System.out.print("Enter name:");
PlaneTicket[row][0] = in.next();
System.out.print("Enter surname: ");
PlaneTicket[row][1] = in.next();
System.out.print("Enter a ID: ");
PlaneTicket[row][2] = in.next();
// you should keep the SeatNumber
PlaneTicket[row][3] = String.valueOf(Math.round(random));
System.out.println("************Airport**********");
System.out.println("Seat number: " + PlaneTicket[row][3]);
System.out.println("Name: " + PlaneTicket[row][0]);
System.out.println("Surname: " + PlaneTicket[row][1]);
System.out.println("ID: " + PlaneTicket[row][2]);
System.out.println("*****************************");
System.out.println("Do you want to view the passanger list: " + "(Yes/No)");
q = in.next();
if ("Yes".equalsIgnoreCase(q) || "y".equalsIgnoreCase(q)) {
System.out.println("Name Surname ID Seat Number");
System.out.println("----------------------------------------");
for (int k = 0; k <= row; k++) {
System.out.println(PlaneTicket[k][0] + " " + PlaneTicket[k][1] + " " + PlaneTicket[k][2] + " " + PlaneTicket[row][3]);
}
}
}
}
关于java - 将记录存储在 for 循环数组中并显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36189885/