Ввод Java требовался дважды — я проанализировал целое число, чтобы я мог использовать scanner.next();

#java #next

#java #Далее

Вопрос:

 public static void main(String[] args) {

    Scanner scanner = new Scanner(System.in);

    // printing menu 
    System.out.println(menu);
    boolean quit = false;
    int selection;
    do {
        // next user input (of integer type) will be stored in the variable selection
        selection = Integer.parseInt(scanner.next());
        switch (selection) {
            case 1:
                System.out.println("Please enter a new record as John Michael West Doe, 574 Pole ave, St. Peter, MO, 63303, 3142752000");

                scanner.useDelimiter(",");

                Person[] people = new Person[0];

                while (scanner.hasNext()) {
                    String fullName = scanner.next();
                    String street = scanner.next();
                    String city = scanner.next();
                    String state = scanner.next();
                    String zipC = scanner.next();
                    String phoneN = scanner.next();

                    System.out.println(fullName);
                }

                break;
            case 2:
                // method to delete record - remove 
                break;
            case 3:
                // search by telephone number
                break;
            case 4:
                // find record by first name
                break;
            case 5:
                // find record by last name
                break;
            case 6:
                // update a record 
                break;
            case 7:
                quit = true;
                break;
            default:
                System.out.println("Invalid");
        }
    } while (selection != 7);
}
  

Привет, в настоящее время я работаю над случаем 1 — моя проблема в том, что мне приходится вводить код дважды, чтобы он принял его и распечатал строку FullName..

Даже в начале, когда я делаю выбор и нажимаю 1 и enter, мне приходится вводить другую клавишу, прежде чем появится строка «пожалуйста, введите новую запись …..».

Я только что узнал о том, что делает nextInt и как он оставляет новую строку, поэтому я проанализировал его, чтобы использовать scanner.next();

Я просто пытаюсь понять, где происходит сбой.

Спасибо.

Ответ №1:

Разница между scanner.nextInt() и Integer.parseInt(scanner.next()) равна нулю, за исключением типов ошибок, которые выдаются, если следующий токен во входном потоке не является целым числом. Вы, должно быть, неправильно поняли несколько вещей.

Я вставил ваш код в файл, скомпилировал его, запустил и не могу воспроизвести ваше наблюдаемое поведение «Я должен дважды нажать enter». Я просто нажимаю enter один раз, и Please enter... показывает.

В вашем коде нет ничего плохого. По крайней мере, ничего, что объясняло бы, почему вам нужно вводить здесь дважды.

Комментарии:

1. Спасибо за разъяснение. Когда я нажимаю одну клавишу, я должен нажать другую клавишу, прежде чем появится сообщение «пожалуйста, введите ..». Затем, когда я вставляю «Имя, адрес и т.д.» В показанном формате, мне приходится вставлять второй раз, прежде чем он выведет его на консоль. Idk, что происходит.

2. Вы должны нажать 1, а затем ввести, и затем ‘1’ принимается ‘nextInt’. Вы не можете использовать командную строку (легко), чтобы иметь систему, в которой вы просто нажимаете 1, и код немедленно запускается. Создайте графический интерфейс (с помощью swing или javafx), если вы действительно этого хотите.