import java.io.*;
import java.util.*;
public class Ticket_reserve {
private static int counter=100;
List<String> BookingList=new ArrayList<String>();
ArrayList<Integer> AgeList=new ArrayList<Integer>();
public void reservation(){
System.out.println("Enter the tickets needed:");
Scanner tkts=new Scanner(System.in);
int tickets=tkts.nextInt();
if(tickets<=counter){
System.out.println("Name and age please");
System.out.println("age:");
Scanner age=new Scanner(System.in);
int Age=age.nextInt();
if(Age<18){
System.out.println("You're under 18.Booking cancelled");
}else{
for(int i=0;i<tickets;i++){
System.out.println("Name:");
Scanner nom=new Scanner(System.in);
String name=nom.nextLine();
BookingList.add(name);
AgeList.add(Age);
counter--;
}
}
}else{
System.out.println(tickets+"tickets unavailable");
}
System.out.println("Names: "+BookingList+","+"Age:"+AgeList);
}
public static void main(String[] args) {
Ticket_reserve t1=new Ticket_reserve();
t1.reservation();
}
}
这是我的代码,它完美无缺。我唯一的问题是我需要检查每个人的年龄,然后预订该人的门票(如果他们超过18岁);否则取消它。我无法得到一个更好的主意,所以我把它放在if
内检查机票可用性,现在我只能得到一个人的年龄。我需要遍历每个人并打印他们的年龄。我应该使用while
循环吗?
谢谢。
答案 0 :(得分:2)
但是你只占一个人?你应该使用一个循环来吸引超过一个人。其次,你应该有一个OOP人员类。 让我们来回答你的问题: 获取人员属性后,您应该创建一个包含这些信息的人员。并将其添加到人员列表中(不需要年龄列表)。一旦您将人员列入列表,您可以在列表中进行迭代:
List<Person> people=new ArrayList<Person>();
//take people info from console and add it to the list:
Person person=new Person(age,name,etc);
people.add(person);
for(Person p:people){
if(p.getAge<18){//say something
}
else{//say something
}
}
答案 1 :(得分:1)
可能最好使用for循环。
即。
for (each ticket) {
Ask for age
}
...etc...
答案 2 :(得分:0)
这更像是设计课程。
为年龄创建私有布尔实例,例如private boolean isAdult;
在该类实例的构造函数中初始化它,然后您只需使用getter 即可查看年龄是否有效。强>
If yes, move on with other calculation;
else just return with an error message.
希望这有帮助。
答案 3 :(得分:0)
您正在使用非常基本的方式来开发代码。
您没有使用oops的最佳功能。 “班级”
您计划中最重要的实体是乘客详情。
您最好使用名称和年龄创建一个乘客类作为变量和方法 passenger(String name,int age)和 getDetails()。
只使用一个List或LinkedList,我建议存储乘客对象。然后在打印过程中迭代它。
您可以代码以任何方式工作,但您无法使用该代码