Java - nextLine ();в пределах оператора switch - PullRequest
0 голосов
/ 27 ноября 2010

У меня есть оператор switch, действующий как меню, в этом я пытаюсь прочитать ввод пользователя. В настоящее время я использую variable=in.next();, и это работает. Однако он будет читать только одно слово, и в определенные моменты пользователю может потребоваться ввести больше, поэтому я попытался использовать variable=in.nextLine();, который компилируется, но когда я запускаю программу, я выбираю свой выбор из меню, и он пропускает чтение в и вернитесь в меню.

Любая помощь будет оценена, спасибо:)

Ответы [ 4 ]

1 голос
/ 27 ноября 2010

Просто используйте:

name=in.nextLine();

и

String choice = in.nextLine();

Это должно быть в конструкторе и в верхней части runApp.

Таким образом, вы 'не оставляйте новую строку в буфере (где она будет использоваться, например, dp).

Вы должны иметь:

dp=in.nextLine();

, как описано в вашем вопросе.

1 голос
/ 27 ноября 2010

Вы должны либо удалить символ новой строки \n из пользовательского ввода, либо предположить, что он есть в вашем операторе switch.

В значительной степени потому, что вы решили использовать nextLine (), пользовательский ввод на компьютер будет выглядеть следующим образом

 f\n

Так что сравните строки соответственно!

0 голосов
/ 27 ноября 2010

Хорошо, я думаю, что я слишком неумел в Java и плохо поставил свой вопрос.

Когда я беру ввод пользователей, это занимает всего 1 слово, я хочу, чтобы оно брало все, что они в основном вкладывают, и когдаиспользуйте nextLine, это просто пропускает чтение и возвращает меня к выбору выбора.

0 голосов
/ 27 ноября 2010

Переключатель селектора может быть только целым, коротким, символом или перечислением. Строка не может быть использована в качестве переключателя.

Если я вас правильно понял, вы бы хотели контролировать свой поток, используя слова, введенные пользователем. Если у вас есть предопределенный список слов, я бы предложил вам использовать enum:

enum Words { начать, остановить, подать звуковой сигнал, }

Теперь пользователь вводит звуковой сигнал. Вы можете сказать:

Words command = Words.valueOf();
///
switch (command) {
    case start: /* start something */ break;
    case stop: /* stop something */ break;
    case beep: /* beep!!! */ break;
    default: throw new IllegalArgumentException("Unknown command " + command);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...