Я пытаюсь понять, как работают эти три метода. Вот как я их понял:Понимание методов nextLine(), next() и nextInt() сканера
nextLine()
читает оставшуюся часть текущей строки, даже если она пуста.nextInt()
читает целое число, но не считывает escape-последовательность "\ n".next()
считывает текущую строку, но не читает «\ n».
Предположим, у меня есть следующий код:
import java.util.Scanner;
public class Welcome2
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Next enter two words:");
int n;
String s1, s2;
n = keyboard.nextInt();
s1 = keyboard.next();
s2 = keyboard.nextLine();
System.out.println(" n is " + n + " s1 is " + s1 + " s2 is " + s2);
}
}
Если мой вход:
2
Hi
Hello
Тогда я получаю следующий вывод на экран:
n is 2
s1 is hi
s2 is
Почему s1
имеют значение «HI»?
Означает ли это, что метод next()
читает следующую строку, даже если символ перехода для первой строки не был прочитан nextInt()
?
'next()' не читает текущую строку - он читает следующий * токен *. Как вы ввели это «2 Привет Привет»? Если вы дважды нажмете возврат, программа закончится, прежде чем вы войдете в «Привет» ... –
Я ввел первое значение, нажмите enter, а затем нажмите enter, третий. Я просто нажимаю один раз между моими входами. – bangbang
Вы используете это из командной строки? Вы уверены, что используете * точный * код, который вы разместили? Потому что, когда я запустил это и попробую точную последовательность, которую вы сказали, она печатает «n is 2 s1 is Hello s2 is» и не дает мне времени на ввод «Привет» вообще.Обратите внимание, что ваш выборка выводится также на три строки, которые ваш образец кода не даст. Я подозреваю, что вы не опубликовали фактический код, который вы используете. (Если вы измените код, пожалуйста, уделите время его форматированию, так как у меня есть для вашего текущего кода. * Сложно читать код, который не был отступом соответствующим образом.) –