gpt4 book ai didi

java - 为什么scanner.hasNextInt()方法需要一个字母来开始处理数字?

转载 作者:行者123 更新时间:2023-12-01 19:44:47 24 4
gpt4 key购买 nike

我正在尝试使用scanner.hasNextInt()方法从用户那里获取一些整数输入。它工作得很好,但我需要输入一个字母让程序知道我已完成输入整数,而我希望控制台知道在我在一行后按回车键后。

例如,我输入(123y进入)程序运行得很好,但是如果我输入(123进入进入)即使我一直按 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();
}
}

最佳答案

三个步骤来理解它。

  1. Scanner 使用分隔符将输入分解为标记,默认分隔符为 \p{javaWhitespace}+。尝试一下

    Scanner scanner = new Scanner(System.in);
    System.out.println(scanner.delimiter());
  2. \p{javaWhitespace} 相当于 java.lang.Character.isWhitespace(),因此 \p{javaWhitespace}+ 将匹配多个 isWhitespace 的字符。

  3. enter 键产生的换行符是一个空格。当您输入多个 enter 时,它们将被识别为分隔符,而不是标记。

您可以使用单个空格,因此它将采用第二个 enter 作为标记:

scanner.useDelimiter("\\p{javaWhitespace}");

关于java - 为什么scanner.hasNextInt()方法需要一个字母来开始处理数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com