它定义了一个名为 readPosInt 的静态方法,该方法以一个字符串作为输入参数,并返回一个正整数。 该方法会不断循环读取用户从键盘输入的整数,直到读取到一个正整数为止。如果用户输入的不是整数,则会提示用户重新输入;如果用户输入的是负数或零,则会提示用户输入正整数。 这个方法使用了 Java 标准库中的 Scanner 类来读取用户输入。在循环中,如果用户输入的不是整数,Scanner 会抛出 InputMismatchException 异常,代码会捕获这个异常并提示用户重新输入。如果用户输入的是正整数,则会立即返回该值
时间: 2023-07-15 08:14:22 浏览: 77
下面是一个实现了上述描述功能的 Java 代码:
```java
import java.util.InputMismatchException;
import java.util.Scanner;
public class PosIntReader {
public static int readPosInt(String prompt) {
Scanner scanner = new Scanner(System.in);
int num = 0;
while (true) {
System.out.print(prompt);
try {
num = scanner.nextInt();
if (num > 0) {
return num;
} else {
System.out.println("Please enter a positive integer.");
}
} catch (InputMismatchException e) {
System.out.println("Please enter an integer.");
scanner.nextLine(); // consume input to avoid infinite loop
}
}
}
public static void main(String[] args) {
int n = readPosInt("Enter a positive integer: ");
System.out.println("You entered: " + n);
}
}
```
在 `readPosInt` 方法中,使用了一个 `while` 循环来不断读取用户输入的整数。在循环中,首先输出提示信息,并尝试读取用户输入的整数。如果读取到的是正整数,则立即返回该值。如果读取到的是非正整数,则输出提示信息并继续循环。如果读取到的是非整数,则会抛出 `InputMismatchException` 异常,代码会捕获该异常并输出提示信息,然后继续循环。注意,在捕获异常后,需要调用 `scanner.nextLine()` 来消耗掉输入缓冲区中的非法输入,否则会陷入无限循环。
阅读全文