Java 循环一次询问太多的输入
最近我一直在学习Java,我遇到了一个关于循环的小问题,我希望程序能做的是,例如,如果用户输入2作为乘客数量,程序会询问两个乘客的姓名,保存他们并打印姓名 其中一个主要问题是,该计划同时要求两名乘客提供详细信息,如下所示:Java 循环一次询问太多的输入,java,loops,Java,Loops,最近我一直在学习Java,我遇到了一个关于循环的小问题,我希望程序能做的是,例如,如果用户输入2作为乘客数量,程序会询问两个乘客的姓名,保存他们并打印姓名 其中一个主要问题是,该计划同时要求两名乘客提供详细信息,如下所示: Please enter the number of passengers: 2 Please enter passenger 1 details: Please enter passenger 2 details: count=1; do{
Please enter the number of passengers:
2
Please enter passenger 1 details:
Please enter passenger 2 details:
count=1;
do{
System.out.println("Please enter passenger " + count +" details:");
passengerName=keyboard.nextLine();
count++;
keyboard.nextLine();
passengerInfo +="\nPassenger "+count+": "+passengerName;
//ticket printout section
System.out.println("Ticket");
System.out.println("======");
System.out.println("Number of Passengers: "+numOfPassengers);
System.out.println(passengerInfo);
}while (count<=numOfPassengers);
}
}
此外,它只需要一个名字,并打印在最后,但U应显示该车票上所有乘客的名单:
count=1;
do{
do{
System.out.println("Please enter passenger " + count +" details:");
passengerName=keyboard.nextLine();
count++;
}while (count<=numOfPassengers);
keyboard.nextLine();
}while (count<=numOfPassengers);
passengerInfo +="\nPassenger "+count+": "+passengerName;
keyboard.nextLine();
//ticket printout section
System.out.println("Ticket");
System.out.println("======");
System.out.println("Number of Passengers: "+numOfPassengers);
System.out.println(passengerInfo);
}
}
考虑这些变化-基于这样一个事实,即目前您似乎对保存所有乘客信息的字符串感到满意:
String passengerInfo = "";
for(int i = 0; i < numOfPassengers; ++i) {
System.out.println("Please enter passenger " + (i+1) +" details:");
passengerInfo +="\nPassenger "+(i+1)+": "+keyboard.nextLine();
}
//ticket printout section
System.out.println("Ticket");
System.out.println("======");
System.out.println("Number of Passengers: "+numOfPassengers);
System.out.println(passengerInfo);
作为下一步,您可能需要考虑将乘客收集到列表中:
List<String> passengers = new ArrayList<String>();
for(int i = 0; i < numOfPassengers; ++i) {
System.out.println("Please enter passenger " + (i+1) +" details:");
String name = keyboard.nextLine();
passengerInfo +="\nPassenger "+(i+1)+": "+name;
passengers.add(name);
}
试着这样做:
Please enter the number of passengers:
2
Please enter passenger 1 details:
Please enter passenger 2 details:
count=1;
do{
System.out.println("Please enter passenger " + count +" details:");
passengerName=keyboard.nextLine();
count++;
keyboard.nextLine();
passengerInfo +="\nPassenger "+count+": "+passengerName;
//ticket printout section
System.out.println("Ticket");
System.out.println("======");
System.out.println("Number of Passengers: "+numOfPassengers);
System.out.println(passengerInfo);
}while (count<=numOfPassengers);
}
}
为什么要使用双do/while循环?请使您的标题与您面临的问题相关。这将使其他有相同问题的人更容易找到您的问题和可能的答案。欢迎使用堆栈溢出。你需要考虑一个不同的数据结构列表吗?大堆我想,检查一下那些循环。反正你不会保存每个人的名字。你只需要提示输入一个名字,塞进乘客的名字,然后直接问下一个名字,覆盖上一个名字。呃,读到这个逻辑让我头疼。我不知道twit给你打了什么标记-但这两个答案听起来完全合理:检查passengerInfo+=-下面的附加下一行-这似乎没有什么价值?!你的答案可能会从改进的缩进中受益。对不起,我会编辑下一行。谢谢你指出这一点。