我正在尝试让Java的扫描程序继续接受输入,直到用户输入“end”的变体,如“END”,“eNd”,“eND”等等。
然而,由于我对Scanner的经验有限,我无法想到适用于所有“end”变体的代码。这是我到目前为止所做的:
private static Scanner userInput = new Scanner(System.in);
String textBody = "";
while(!userInput.hasNext("end") && !userInput.hasNext("END"))
{
textBody += userInput.nextLine() + "\n";
}
感谢您的帮助
答案 0 :(得分:3)
将Scanner.nextLine
返回的字符串转换为String.toLowerCase
的小写字母,并将其与"end"
进行比较。
答案 1 :(得分:3)
如果你想在用户输入一个由“end”组成的行时终止循环(在某些大写字母中,但在用户输入“end end of the road”时没有终止),那么尝试这样的事情: / p>
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
循环。)
答案 2 :(得分:2)
尝试使用正则表达式:
Scanner userInput = new Scanner(System.in);
Pattern end = Pattern.compile("end", Pattern.CASE_INSENSITIVE);
String textBody = "";
while(!userInput.hasNext(end)) {
textBody += userInput.nextLine() + "\n";
}