Базовый запрос о сканере Java - PullRequest
2 голосов
/ 27 ноября 2011

Я пытаюсь заставить сканер Java продолжать принимать вводные данные до тех пор, пока пользователь не введет некоторые варианты «end», например «END», «eNd», «eND» и т. Д.

Однако,из-за моего ограниченного опыта работы со сканером, я не могу придумать код, который бы работал для всех вариантов «конца».Вот что у меня есть:

private static Scanner userInput = new Scanner(System.in);
String textBody = "";

while(!userInput.hasNext("end") && !userInput.hasNext("END"))
{
textBody +=  userInput.nextLine() + "\n";
}

Спасибо за любую помощь

Ответы [ 3 ]

3 голосов
/ 27 ноября 2011

Если вы хотите завершить цикл, когда пользователь вводит строку, состоящую из «конца» (в некоторых вариациях прописных букв, но не завершается, когда пользователь вводит «конец пути», попробуйте что-то вроде этого:

private static Scanner userInput = new Scanner(System.in);
StringBuilder sb = new StringBuilder();

String line = userInput.nextLine();
while(!line.equalsIgnoreCase("end"))
{
    sb.append(line).append('\n');
    line = userInput.nextLine();
}

String textBody = sb.toString();

(Вы можете написать это как цикл for одинаково хорошо.)

3 голосов
/ 27 ноября 2011

Преобразовать строку, возвращаемую Scanner.nextLine, в нижний регистр с помощью String.toLowerCase и сравнить ее с "end".

2 голосов
/ 27 ноября 2011

Попробуйте, используя регулярные выражения:

Scanner userInput = new Scanner(System.in);
Pattern end = Pattern.compile("end", Pattern.CASE_INSENSITIVE);
String textBody = "";

while(!userInput.hasNext(end)) {
    textBody +=  userInput.nextLine() + "\n";
}
...