Разница между использованием nextInt () и nextLine () при разборе - PullRequest
1 голос
/ 25 сентября 2019

Мой профессор CS рекомендует использовать метод nextLine () и анализировать целое число, а не использовать метод nextInt ().Мне просто интересно, зачем использовать nextLine () вместо nextInt ().

Например:

Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
String input = in.nextLine();
int num = Integer.parseInt(input);

Вместо:

Scanner in = new Scanner(System.in);
System.out.println("Enter an integer: ");
int input = in.nextInt();

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Я рассуждаю так: учащиеся предполагают, что входные данные просто магически читаются как int, boolean, long и т. Д., И пропускают факт того, как они на самом деле переходят в любой примитивный тип данных.Другие языки (особенно аналог C # Java) требуют, чтобы вы сначала прочитали входные данные в виде строки, а затем проанализировали ее для соответствующего типа данных.

Также существует проблема с символом новой строки в Scanner при использовании nextInt.

0 голосов
/ 25 сентября 2019

При вызове метода nextInt () текущая позиция входного потока переходит на следующую введенную строку.И после нажатия Enter вы вручную переходите к следующей строке.

Однако при вызове метода nextLine () поток ввода мгновенно переходит на следующую строку.

Установка метода nextInt ()в цикле может привести к тому, что функция прочитает что-то перед тем, как набрать текст, что вам не нужно.

        Scanner sc = new Scanner(System.in);
        int x;
        do{
            try{
                x = sc.nextInt();
                break;
            }

            catch(InputMismatchException e){
                System.out.print("Enter an Integer");
            }
        }while(true);       

Запускает цикл вечно, а

        Scanner sc = new Scanner(System.in);
        int x;
        do{
            try{
                x = Integer.parseInt(sc.nextLine());
                break;
            }

            catch(NumberFormatException e){
                System.out.print("Enter an Integer");
            }
        }while(true);       

не

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...