关于Java Scanner的基本查询

时间:2011-11-27 02:31:58

标签: java io java.util.scanner

我正在尝试让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";
}

感谢您的帮助

3 个答案:

答案 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";
}