gpt4 book ai didi

java - 初学者 : exception thrown in catch; implement a loop? - Java

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:46 25 4
gpt4 key购买 nike

开发类似于创建收据的程序。它需要扫描仪输入:名称和价格。尝试使用 try - catch 来处理不会将 double 输入到价格扫描器中的情况。设法使它起作用,但仅在抛出一次异常时才有效;如果我在 catch block 中再次给出错误的输入,它将失败。我该怎么做才能让程序处理 catch 中的异常?我也只是一个学习我可以获得的任何免费资源的 child ,所以这里的错误可能只是基本问题/错误的编码实践,也希望指出这些问题。

谢谢!

代码如下:

        Scanner scanPrice = new Scanner(System.in);
System.out.println("Enter the cost: ");
try {
priceTag = scanPrice.nextDouble();
} catch (InputMismatchException e) {
System.out.println("Only numbers. Enter the cost again.");
scanPriceException = new Scanner(System.in);
priceTag = scanPriceException.nextDouble();
}

costs[i] = priceTag;

最佳答案

这是因为你的 trycatch block 只运行了一次。如果你需要重试直到成功,你需要把它放在一个循环中。只需更改您的代码块:

    Scanner scanPrice = new Scanner(System.in);
System.out.println("Enter the cost: ");
try {
priceTag = scanPrice.nextDouble();
} catch (InputMismatchException e) {
System.out.println("Only numbers. Enter the cost again.");
scanPriceException = new Scanner(System.in);
priceTag = scanPriceException.nextDouble();
}

收件人:

    Scanner scanPrice = new Scanner(System.in);
while (true) {
System.out.println("Enter the cost: ");
try {
priceTag = scanPrice.nextDouble();
break;
} catch (InputMismatchException e) {
System.out.println("Only numbers. Enter the cost again.");
scanPrice.next();
}
}

如果 nextDouble 上出现 InputMismatchException,则 try block 将不会到达 break 语句。

编辑:忘记添加,但您还需要丢弃旧输入,这样它就不会再次引发异常。因此 scanPrice.next() 最后。有关详细信息,请参阅此答案:How to handle infinite loop caused by invalid input using Scanner

关于java - 初学者 : exception thrown in catch; implement a loop? - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23599372/

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