我正在尝试使用Scanner.hasNextInt()方法从用户那里获取一些整数输入。它可以正常工作,但是我需要输入一个字母以使程序知道我已经输入完整数,而我希望控制台知道在单行之后按Enter键后才知道。
例如,我键入 (1 2 3 ÿ 输入) 该程序工作正常,但如果我键入 (1 2 3 输入 输入) 即使我一直按Enter键也没有任何反应。如果您需要看一下,这是我代码的相关部分。
public class Main {
static LinkedList linkedList =new LinkedList();
public static void main(String [] args){
System.out.println("enter integer numbers");
Scanner scanner=new Scanner(System.in);
while (scanner.hasNextInt()){
linkedList.append(scanner.nextInt());
}
print();
}
}
答案 0 :(得分:3)
了解它的三个步骤。
Scanner
使用定界符将输入分成令牌,默认定界符为\p{javaWhitespace}+
。试试
Scanner scanner = new Scanner(System.in);
System.out.println(scanner.delimiter());
\p{javaWhitespace}
等效于java.lang.Character.isWhitespace()
,因此\p{javaWhitespace}+
将匹配isWhitespace
的多个字符。
键enter
产生的换行符是空白。当您输入多个enter
时,它们将被识别为定界符,而不是标记。
您可以使用单个空格,因此它将第二个enter
作为令牌:
scanner.useDelimiter("\\p{javaWhitespace}");