Сомневается класс Scanner в Java

У меня есть этот маленький код. Случается, что, когда наступает время ввождения третьей информации (имя), он это отпускает, он как будто он встречался автоматически в enter и ничего не мог писать:

        Scanner sc = new Scanner(System.in);
        System.out.println("Introduce el primer numero: ");
        int num1 = sc.nextInt();
        System.out.println("Introduce el segundo numero: ");
        int num2 = sc.nextInt();
        System.out.println("Introduce tu nombre: ");
        String nombre = sc.nextLine();
        System.out.println("--------------"); //esto no es mas que decoracion

Таким образом что вывод из-за консоли остался бы как что-либо подобное:

Introduce el primer numero:    
1
Introduce el segundo numero:    
2
Introduce tu nombre:
-------------

Не, потому что происходит это. Он как будто сходил с ума класс Scanner, когда сначала я спрашиваю его из-за int и потом из-за String. Вы знаете, что он происходит?

0
задан 28.05.2018, 13:11
2 ответа

Это проистекает того, что mГ©todo Scanner.nextInt не завершает Гєltimo carГЎcter новости lГ-nea Вашего ввода и, следовательно, эта новость lГ-nea завершается в следующем призыве к Scanner.nextLine.

EncontrarГЎ то же поведение, когда использует Scanner.nextLine despuГ©s Scanner.next () или любого другого mГ©todo Scanner.nextFoo (кроме nextLine).

то, что ты можешь делать, является следующим:

Scanner sc = new Scanner(System.in);
System.out.println("Introduce el primer numero: ");
int num1 = sc.nextInt();
System.out.println("Introduce el segundo numero: ");
int num2 = sc.nextInt();
//Se consume la siguiente linea
sc.nextLine();
System.out.println("Introduce tu nombre: ");
String nombre = sc.nextLine();
System.out.println("--------------");

Шрифт:

https://stackoverflow.com / questions / 13102045/scanner-is-skipping-nextline-after-using-next-or-nextfoo

1
ответ дан 20.11.2019, 08:37
  • 1
    Спасибо за твой вклад, он был большой помощи!. Я прочитал где-то здесь, что, чтобы это исправлять tambié n ты можешь вновь объявлять sc = new Сканнер (System.in) и тогда, если, что программа надеется на то, что ты вводишь информацию, не прыгая в следующую линию. Это, что только что объяснило, правильно? –  Sergio AG 28.05.2018, 16:17
  • 2
    Такой он функционирует равным способом формы, в которой я показал тебя, и объявляя снова sc = new Scanner(System.in). –  J. Castro 28.05.2018, 16:22
  • 3
    Гениальный! Большое спасибо из-за твоего вклада! –  Sergio AG 28.05.2018, 16:24

Только смени

String nombre = sc.nextLine();

на

String nombre = sc.next();

Из-за какой-то razГіn nextLine () не позволяет тебе вводить вышеупомянутый неудар в лунку.

, если у тебя есть сомнения в различиях>

next () прочитай до тех пор, пока он не находит место (чтобы читать в первом месте)

nextLine () прочитай весь она lГ-nea (чтобы читать в разрыве lГ-nea)

0
ответ дан 20.11.2019, 08:37

Теги

Похожие вопросы