gpt4 book ai didi

java - 如何限制扫描仪的输入?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:45:59 26 4
gpt4 key购买 nike

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputInt = checkInput(in, "Enter an integer and a base: ");
int inputBase = checkInput(in, "");
}

public static int checkInput(Scanner in, String prompt) {
System.out.print(prompt);
while (!in.hasNextInt()) {
in.next();
System.out.println("Sorry, that is an invalid input.");
System.out.print(prompt);
}
return in.nextInt();
}

此方法有效并且不会返回任何错误的输入,即; p“你好”。

我的问题是如何限制扫描仪读取的输入数量。假设我输入了 5 five % ; 但我只想将 5five 传递到我的方法中,其余的都丢弃了。

我查看了 Java API,但找不到可以限制接受的用户输入量的方法。我只是想念它还是有其他方法可以做到这一点?

编辑:我曾尝试使用 .length() 方法来限制输入,但不允许大于 .length() 参数的整数。

最佳答案

这是一个工作示例,说明您可以如何完成所需的工作。我将其分解,以便每次输入时都会提示用户一次,这样更容易验证。我将您的 checkInput 方法更改为 getInput,它仅将有效的用户输入作为 String 返回,然后将其转换为 int.

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int inputInt = Integer.parseInt(getInput(in, "Enter an integer: "));
int inputBase = Integer.parseInt(getInput(in, "Enter a base: "));
System.out.println("Int: " + inputInt + ", base: " + inputBase);
}

public static String getInput(Scanner in, String prompt) { // Get valid user input
System.out.print(prompt); // Tell user what to input
String text = "";
while (true) { // Keep looping until valid input is found
text = in.nextLine(); // Get input from stdin
if(isInteger(text)) // Check if they put in integer
break; // Exit loop
System.out.print("Try again, " + prompt); // Wasn't valid, prompt again
}
return text; // Return valid user input
}

private static boolean isInteger(String str) { // Check if string is integer
try {
Integer.parseInt(str); // If this doesn't fail then it's integer
return true;
} catch(NumberFormatException e) {
return false; // Wasn't integer
}
}

样本运行:

Enter an integer: 2 dog five 3
Try again, Enter an integer: 2
Enter a base: cat
Try again, Enter a base: 3
Int: 2, base: 3

它有助于分离功能 - 您试图在一个方法中读取输入、验证输入并转换为 int。如果将其分解,它会变得更易于管理。

关于java - 如何限制扫描仪的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24835445/

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