我正在尝试使用一维数组进行座位预留或分配。用户输入选择2个部分,无论是经济舱还是头等舱,但我不想走那么远,因为我还不了解算法。假设用户输入头等舱座位并从座位1中选择座位,那么用户输入必须保存在数组中。如果用户再次输入相同的座位,则必须打印出已经占用的座位。如果用户输入已占用的座位或输入相同的座位,我该如何打印出“已占用的座位”?

int arr[] = new int[10];


    for(int i=0;i<arr.length;i++)
    {
        System.out.println ("(1)First Class \n(2)Economy Class");
        int section = input.nextInt();

        if(section == 1)
        {
            System.out.println ("Welcome to First Class");
            System.out.println ("Choose Seat from 1-2");
            arr[i] = input.nextInt();

            if(arr[i] == 1)
            {
                            arr[0]=1;
                System.out.println ("Seat #1");
            }
            else if(arr[i] == 2)
            {
                arr[1]=2;
                System.out.println ("Seat #2");
            }
            else if(arr[i] == arr[0] || arr[i]==arr[1])
            {
                System.out.println ("Seat already taken");
            }

        }

最佳答案

我似乎不了解您提供的代码与您要解决的问题之间的关系。

如果我对您的理解正确,那么您正在尝试查看数组是否已包含用户输入的元素。为此,您可以做这样的事情

int a[] = new int[10];
for(int i=0;i<10;i++){
    boolean seatTaken = false;
    int seat = input.nextInt();
    for(int j=0;j<i;j++){
        if(a[j]==seat){
            seatTaken = true;
            break;
        }
    }
    if(seatTaken){
        System.out.println("The Seat has already been taken");
        i = i - 1;
    }else{
       a[i] = seat;
    }
}


当然,可以通过使用具有恒定查找时间的HashSet来提高效率

关于java - 如果用户输入已经坐下的座位或输入相同的座位,我应该添加什么代码以打印出“已经坐下的座位”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57230883/

10-12 02:53