gpt4 book ai didi

java - 如何请求输入直到收到 2 个整数?

转载 作者:行者123 更新时间:2023-12-02 18:12:37 25 4
gpt4 key购买 nike

我需要验证用户输入两个整数,因此,我需要继续要求他输入,直到他提供两个整数输入。不知道如何实现它,但我想出了类似的东西,但现在正在努力实现检查 coord1 和 coord2 是否获得正确类型的部分。如果没有,它当然会给我 NumberFormatException:

  while (true) {
System.out.print("Enter the coordinates: ");
int coord1 = Integer.parseInt(scanner.next());
int coord2 = Integer.parseInt(scanner.next());
if (coord1 < 1 || coord1 > 3 || coord2 < 1 || coord2 > 3) {
System.out.println("Coordinates should be from 1 to 3!");
continue;
} else if (cellOccupied(field, coord1, coord2)) {
System.out.println("This cell is occupied! Choose another one!");
continue;
}
break;
}

我可以不使用 try/catch 来解决这个问题吗,因为我还没有学会,或者这是唯一的方法?

提前谢谢您,抱歉,因为我仍在学习 Java 语法和验证方法。

最佳答案

您可以依靠Scanner,而不是手动检查输入的类型是否正确。的方法hasNextInt()nextInt() .

第一个将检查您的输入是否是实际的 int,然后您可以继续使用 nextInt() 读取它。 。有关放置 nextLine() 的更多详细信息读取数字类型后,读取以下内容 question在这里询问堆栈溢出。

在这里,我还将您的代码包含在示例 main 中。我知道你的只是一个包含更多代码的片段(例如,我没有 cellOccupied 方法),但我只是像这样粘贴它以进行最小的测试。此外,我还参数化了您的用例。重复相同的代码来应用相同的坐标逻辑读取用户输入有点奇怪和多余。

public class Main {
public static void main(String[] args) {
int coord1 = 0, coord2 = 0;
do {
coord1 = readCoordinate("Enter first coordinate: ");
coord2 = readCoordinate("Enter second coordinate: ");

//Showing an error message if the coords refer to an occupied cell
if (cellOccupied(field, coord1, coord2)) {
System.out.println("This cell is occupied! Choose another one!");
}
} while (cellOccupied(field, coord1, coord2));
}

private static int readCoordinate(String message) {
int coord;
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print(message);
if (scanner.hasNextInt()) {
coord = scanner.nextInt();

//getting rid of the new line character after reading the int
scanner.nextLine();

//Checking coordinate value
if (coord < 1 || coord > 3) {
System.out.println("Coordinates should be from 1 to 3!");
continue;
}
} else {
//assigning an undesired value (since your coords must be between 1 and 3
coord = 0;

//getting rid of the wrong user input
scanner.nextLine();

//Showing an error message
System.out.println("Please enter an int value");

//Skipping directly to the loop's condition
continue;
}

break;
}

return coord;
}
}

顺便说一句,避免在循环中声明字段。

关于java - 如何请求输入直到收到 2 个整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72071408/

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