当前位置: 首页 > 知识库问答 >
问题:

如何在捕捉到异常java后再次启动计算

龚博涛
2023-03-14

我是java新手,我正在尝试计算净收入,如果我得到负净值,我希望用户返回计算。我尝试使用try cat语句,但它无法返回到开始的位置。请帮助。

下面是我的代码

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your income: ");
        double income = scanner.nextDouble();

        System.out.print("Enter your expenses: ");
        double expenses = scanner.nextDouble();
        double nett = income - expenses;

        if (nett < 0) {

            try {
                System.out.println("Please enter correct expense value");

            } catch (Exception e) {

            }

        }

        System.out.println("Your nett income is " + nett);
    }
}

共有2个答案

农明辉
2023-03-14

使用do while代替以下异常:

do { 
            System.out.print("Enter your expenses: ");
            expenses = scanner.nextDouble();
            nett = income - expenses;
        } while (nett<0);
郭坚壁
2023-03-14

嗯,try-catch块不是这样工作的,相反,您希望将程序包装在一个while循环中:

    public class Main {
        public static void main(String[] args) {
            
            double nett = -1;

            try (Scanner scanner = new Scanner(System.in)) {
    
                while (nett < 0) {

                    System.out.print("Enter your income: ");
                    double income = scanner.nextDouble();

                    System.out.print("Enter your expenses: ");
                    double expenses = scanner.nextDouble();
                    nett = income - expenses;

                    if (nett < 0) {
                        System.out.println("Please enter correct expense value");

                    }
                }
    
            } catch (Exception e) {
                System.out.println(e.toString);
            }
    
            System.out.println("Your nett income is " + nett);
        }
    }

我还将您的扫描仪封装在一个try resources块中,这样无论发生什么情况,它都会自动关闭。

 类似资料:
  • 然后我把它用作: 但是最后一行代码没有捕获任何异常,我的代码给出运行时异常并停止。你能解释为什么会发生这种情况,如果可能的话,如何修复它吗?

  • 我目前有以下示例代码,我试图将OutputStream转换为InputStream,这是我从http://blog.ostermiller.org/convert-java-outputStream-InputStream中的获得的想法 但这里我的问题是,save方法可能会抛出IOException,我希望捕获它,并将其作为getInputStream方法的一部分重新抛出。 我读过如何从线程捕捉异

  • 本文向大家介绍.NET Framework 捕捉异常,包括了.NET Framework 捕捉异常的使用技巧和注意事项,需要的朋友参考一下 示例 在特殊情况下,代码可以并且应该引发异常。例如: 尝试阅读流的末尾 没有访问文件的必要权限 尝试执行无效的操作,例如被零除 从Internet下载文件时发生超时 调用方可以通过“捕获”它们来处理这些异常,并且仅应在以下情况下进行: 它实际上可以解决特殊情况

  • 我在用滑翔4。当URL返回404时,获取FileNotFoundException。我尝试使用RequestListener捕捉异常。但它并没有缓存这个异常。 记录如下: 2019-03-20 17:48:07.134 32233-32233/com。zyta。zflikz带滑翔:装载失败https://lh4.googleusercontent.com/-UxjwFuQRjXA/AAAAAAAA

  • 我正在建造我的第一个Java图书馆。代码使用了大量的IO方法,因此可以想象有大量的异常需要捕获。但我在想,我应该抛出例外吗?我的意思是,捕捉异常当然是应用程序编写者的工作。因为即使我抓到了它们,我也不知道应用程序在发生这种情况时会做什么。 我应该抛出IOExceptions等,还是应该在库代码中捕获它们?

  • 问题内容: 据我所知,netty通过重写方法exceptionCaught()处理异常。但是我想要的是一个可以处理所有异常的处理程序。因此,管道应类似于: InboundExceptionHandler- inboundHandler1-inboundHandler2-outboundHandler1-outboundHandler2-OutboundExceptionHandler 这意味着我应