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