(Начинающий) Java-программа прекращается без причины

1

В настоящее время я работаю над программой для бронирования отелей (я новичок в Java, поэтому я занимаюсь созданием случайных программ). Для жизни я не могу понять, почему программа заканчивается после ввода моего числа гостей, Я написал программу в Eclipse, и я тоже компилирую программу в Eclipse. Любая помощь будет оценена по достоинству.

Мой код:

package text;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import org.apache.commons.lang3.ArrayUtils;

public class HotelReservations {
    public static void main(String[] args){

        @SuppressWarnings("resource")
        Scanner in = new Scanner(System.in);

        int Guests;
        String Reserved;

        int[] RoomsArray = new int[10];

        RoomsArray[0] = (int) ((10 * Math.random()) - 1);
        RoomsArray[1] = (int) ((10 * Math.random()) - 1);
        RoomsArray[2] = (int) ((10 * Math.random()) - 1);
        RoomsArray[3] = (int) ((10 * Math.random()) - 1);
        RoomsArray[4] = (int) ((10 * Math.random()) - 1);
        RoomsArray[5] = (int) ((10 * Math.random()) - 1);
        RoomsArray[6] = (int) ((10 * Math.random()) - 1);
        RoomsArray[7] = (int) ((10 * Math.random()) - 1);
        RoomsArray[8] = (int) ((10 * Math.random()) - 1);
        RoomsArray[9] = (int) ((10 * Math.random()) - 1);   

        Date Date = new Date( );
            SimpleDateFormat ft = 
            new SimpleDateFormat ("EEE, d MMM yyyy 'at' hh:mm a!");

        System.out.println("Today date is: " + ft.format(Date));

        System.out.println();

        System.out.println("Enter the number of guests:");
        Guests = in.nextInt();

        if (Guests > 8)
        {
            System.out.println("The maximum amount of guests allowed per room is 8. Please split groups of more than 8 into seperate rooms.");
            System.exit(0);
        } 
        else if (ArrayUtils.contains(RoomsArray, 0))
        {
            System.out.println("A room is available! The closest available room is: Room " + ArrayUtils.indexOf(RoomsArray, 0));
        } 
        else 
        { 
            System.out.println("Sorry, no rooms are available.");
        }

        System.out.println("Would you like to reserve this room? (Yes/No)");
        Reserved = in.nextLine();

        if (Reserved.equals("Yes")) //here is where i changed it, now it will check yes/no
        {
            System.out.println("Hi");
        } else 
        {
            System.out.println("No");
        }
    }   
}
  • 2
    Он что-то напечатает, а затем сразу прекратит работу, потому что так написана программа .
  • 0
    @1337 1337 Можете ли вы объяснить, почему это происходит? Я действительно новичок в Java.
Показать ещё 4 комментария
Теги:

2 ответа

2
Лучший ответ

Я думаю, вы пытаетесь использовать тот же самый сканер для чтения ввода для целых чисел и текста

Не рекомендуется использовать тот же сканер для чтения целых чисел и чтения ввода текста

используйте различные сканеры, такие как scan1 и scan2
scan1 для целых чисел
scan2 для следующей строки как строка

Scanner scan1= new Scanner(System.in);
System.out.println(q.nextInt());
Scanner scan2= new Scanner(System.in);
System.out.println(scan2.nextLine());
  • 0
    Большое спасибо, это решило мою проблему! : D
0

Программы, которые не используют бесконечные циклы/рекурсию, прекратятся. Это как работает код. Ваш код написан отлично. Кроме того, что именно вы спрашиваете? Можете быть более конкретными? Я не могу прокомментировать, потому что у меня есть <50 rep, поэтому я должен отправить ответ.

Если Reserved является строкой, вы используете.equals, чтобы проверить ее на некоторый тест:

if(Reserved.equals("Yes")){
System.out.println("Answer is yes");
}

Поскольку число гостей - это значение int, которое вы используете, чтобы сравнить его с тестом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню