java - 防止用户在 Java 中输入空格

标签 java

我希望用户只输入他的年龄。所以我做了这个程序:

Scanner keyb = new Scanner(System.in);  
int age;

while(!keyb.hasNextInt())
{
    keyb.next();
    System.out.println("How old are you ?");
}

age = keyb.nextInt();
System.out.println("you are" + age + "years old");

我找到了如何通过将 while 循环与 keyb.hasNextInt() 结合使用来防止用户使用字符串,但是如何防止他使用空格或输入比他的年龄更多的输入?

例如我想防止这种输入“12 m”或“12 12”

另外,如何清除缓冲区中的所有现有数据?当我尝试使用这个时,我面临着一个无限循环:

while(keyb.hasNext())
  keyb.next();

最佳答案

您想获得整条线。使用 nextLine 并检查数字,例如

String possibleAge = "";
do {
    System.out.println("How old are you ?");
    possibleAge = keyb.nextLine();
} while (!possibleAge.matches("\\d+"))

关于java - 防止用户在 Java 中输入空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51420538/

相关文章:

java - 嵌套for循环的大O

java - WordNet 没有单词 'for' 的定义

Java加密C#解密不起作用

java - 共享两个组合框的数据源

java - 找到多个定义...我有 2 个类似的定义

java - 可以使#currentTimeMillis 成为常数吗?什么时候给它加值?

java - 中断方法不关闭 JVM

java - 一些 Controller 的 Spring mvc 过滤器

java.lang.StringIndexOutOfBoundsException : String index out of range: 3

java - Java 是否有一种有效的方法在 StringBuilder 上执行多个正则表达式 ReplaceAll 操作?