Java扫描器的基本查询
我试图让Java的扫描器一直接受输入,直到用户键入“end”的一些变体,如“end”、“end”、“end”等 然而,由于我对扫描器的经验有限,我想不出适用于“end”所有变体的代码。以下是我目前掌握的情况:Java扫描器的基本查询,java,io,java.util.scanner,Java,Io,Java.util.scanner,我试图让Java的扫描器一直接受输入,直到用户键入“end”的一些变体,如“end”、“end”、“end”等 然而,由于我对扫描器的经验有限,我想不出适用于“end”所有变体的代码。以下是我目前掌握的情况: private static Scanner userInput = new Scanner(System.in); String textBody = ""; while(!userInput.hasNext("end") && !userInput.hasNext("
private static Scanner userInput = new Scanner(System.in);
String textBody = "";
while(!userInput.hasNext("end") && !userInput.hasNext("END"))
{
textBody += userInput.nextLine() + "\n";
}
感谢您的帮助使用
字符串将扫描器.nextLine
返回的字符串转换为小写。toLowerCase并将其与“end”进行比较,使用正则表达式尝试以下操作:
Scanner userInput = new Scanner(System.in);
Pattern end = Pattern.compile("end", Pattern.CASE_INSENSITIVE);
String textBody = "";
while(!userInput.hasNext(end)) {
textBody += userInput.nextLine() + "\n";
}
如果您想在用户输入由“end”组成的行时终止循环(以大写字母表示,但在用户输入“end of the road”时不终止),请尝试以下操作:
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
循环来编写。)在toLowerCase为“end”之前,可能更合理的做法是逐行读取。无需使用新字符串(“end”)
。只需将其与“end”
进行比较。请注意,这仅在字符串“end”时有效是行中唯一的文本,前后都没有空格。@ÓscarLópez-好的观点。空格的问题(如果它是OP的问题)可以通过使用!line.trim().equalsIgnoreCase(“end”)
来解决。