Я искал вокруг и не могу найти решение моей проблемы. Для одного из моих курсов мне поручено написать простую консольную систему электронной почты. Когда пользователю предлагается создать тело сообщения, строковая переменная, содержащая ввод, принимает только одно слово, а не целое сообщение. Я прочитал, что должен использовать readLine(), но когда программа предложит пользователю ввести тело сообщения, он полностью пропускает ввод для этого сегмента. Чтобы исправить это, я прочитал, что перед тем, как прочитать строку, я должен пропустить пропуск («\ n»). Теперь, однако, программа не заканчивается после нажатия пользователем Enter. Он просто держит вход и не позволит мне ничего делать.Java - чтение нескольких входных строк консоли в переменную
Вот немного кода, чтобы помочь:
Scanner in = new Scanner(System.in);
//Declare variables
String subject, reciepent, message = "";
//Get subject
System.out.println("> Enter subject: ");
subject = in.next();
//Get reciepent
System.out.println("> Enter reciepent: ");
reciepent = in.next();
//Get message
System.out.println("> Enter message: ");
in.skip("\n");
message = in.nextLine();
//Print out message to verify user input
System.out.println("> " + message);
Я не понимаю, как nextLine() работает для всех потоков я искал, но не для меня.
Так сразу после 'recipent = in.next(),' 'положить in.nextLine();' и посмотреть, если это помогает. Также я уверен, что вы можете избавиться от 'in.skip (" \ n ");' если у вас нет этого по какой-то причине. – 3kings
Его потому, что 'next()' не использует новую строку, см. Http://stackoverflow.com/questions/13102045/skipping-nextline-after-using-next-nextint-or-other-nextfoo-methods –