-4
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循环吗?

谢谢你。

4

4 回答 4

2

但是您只需要 1 人吗?您应该使用循环来容纳 1 人以上。其次,您应该有一个用于 OOP 的人员类。让我们来回答您的问题:获取人员的属性后,您应该使用这些信息创建一个 Person。并将其添加到 Person 列表(不需要有年龄列表)。一旦您将人员带入列表,您可以迭代名单:

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
    }
}
于 2013-08-13T16:33:15.423 回答
1

可能最好使用 for 循环。

IE

for (each ticket) {
    Ask for age
}
...etc...
于 2013-08-13T16:22:49.437 回答
0

这更多地与设计课程有关。

为 age创建一个私有布尔实例,比如说private boolean isAdult;

在该类实例的构造函数中对其进行初始化,然后您可以使用 getter来查看年龄是否有效。

If yes, move on with other calculation;
else just return with an error message.

希望这可以帮助。

于 2013-08-13T16:25:51.907 回答
0

您正在使用非常基本的方式来开发您的代码。

您没有使用 oops 的最佳功能。“

  1. 程序中最重要的实体是乘客详细信息。

  2. 所以最好创建一个类乘客,其名称和年龄 作为变量和方法乘客(String name,int age)getDetails()

  3. 为什么你多次创建了扫描仪对象。一旦创建了扫描仪对象,它就可以在所有情况下使用。
  4. 仅使用一个 List 或 LinkedList,我建议存储乘客对象。然后在打印期间对其进行迭代。

  5. 您可以使代码以任何方式工作,但您不能使用该代码

于 2013-08-13T16:57:28.527 回答