gpt4 book ai didi

java - java用户输入异常处理

转载 作者:行者123 更新时间:2023-12-01 20:26:52 25 4
gpt4 key购买 nike

我试图在我的代码中添加一个异常。但它并不能完全发挥作用。我尝试让用户输入整数,然后将其添加到列表中。

为什么它只适用于第一个输入?假设如果我第一次输入 1.0 那么它会引发错误。但如果我输入 10, 1.0 它不会产生错误。当我打印列表时。只有 10 这实际上是正确的。但我想让它这样,如果输入整数以外的任何内容,它会引发错误,并且不会终止。而是要求用户重试。

这就是我的代码的样子

package basic.functions;
import java.util.*;
import java.text.DecimalFormat;

public class Percent {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
reader.useDelimiter(System.getProperty("line.separator"));
List<Integer> list = new ArrayList<>();
System.out.println("Enter Integer: ");

do {
try {
int n = reader.nextInt();
list.add(Integer.valueOf(n));
} catch (InputMismatchException exception) {
System.out.println("Not an integer, please try again");
}
}

//When user press enter empty
while (reader.hasNextInt());
reader.close();

最佳答案

您正在运行的是一个 do-while,它将在检查条件之前执行一次。

因此,您的第一个输入将尝试被解析为已处理异常的整数,从而打印错误消息。

如果您在第一次以外的任何地方给出非整数,您的代码将在尝试解析输入之前终止循环。

类似下面的内容将按照您的预期正确地为您提供错误消息。

public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
reader.useDelimiter(System.getProperty("line.separator"));
List<Integer> list = new ArrayList<>();
System.out.println("Enter Integer: ");

while (true) {
try {
int n = reader.nextInt();
list.add(Integer.valueOf(n));
} catch (InputMismatchException exception) {
System.out.println("Not an integer, please try again. Press enter key to exit");
if (reader.next().isEmpty()) {
break;
}
}
}

System.out.println(list);
reader.close();
}

关于java - java用户输入异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43760671/

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