如何只从java.util.Scanner中获取一个输入?

时间:2016-10-28 10:05:50

标签: java java.util.scanner

我知道java.util.Scanner有一个自动分隔符" &#34 ;.有什么方法可以摆脱这个,以便如果有人在控制台的同一行输入多个号码,那么这将是一个无效的输入?例如,我只是一次输入一位数字,我不希望有人能够在同一行输入2 5和23,并且要处理它们中的每一个,谢谢。

1 个答案:

答案 0 :(得分:0)

为了达到您想要的结果,首先检查 String 是否为数字。为此,请使用 .matches("\\d") 函数。这会检查来自扫描仪输入是否为单个数字。然后,使用 Integer.parseInt(String); 函数获取字符串,并将其转换为整数。这样,您就可以将 userInput 用作 Integer 而不是将其保留为 String。

代码如下:

import java.util.Scanner; 

public class test {
  public static void main(String args[]) {
    while (true){
    System.out.println("Type a single number in!\n");
    Scanner userInt = new Scanner(System.in);
    String userInp = userInt.nextLine();
    if (userInp.matches("\\d")){// Checks if userInp is a single digit
      System.out.println("\nYou are correct!\n");
      int userNumber = Integer.parseInt(userInp); // Turns the userInp(String) into the userNumber (Integer)
      System.out.println("Your number was " + userNumber + "!\n");// Prints out the number(which is now an Integer instead of a String)
    } else if (userInp.equals("-break")) {
      break;
    } else {
      System.out.println("\nYou are incorrect.\n");
      System.out.println("We couldn't read your number because it wasn't a single digit!\n");
    }
    }
    
  }   
}

输出如下:

Output