【问题标题】:try catch placement issue within program design?尝试在程序设计中捕获放置问题?
【发布时间】:2014-04-29 02:18:59
【问题描述】:

我已经输入了 try catch,如图所示,程序仍然会跳到第二个和第三个输入问题,而不会在之后打印错误异常(“输入您的操作:加、减、除、乘或退出”)。此外,如果为第一个问题输入“退出”,则在程序完成之前第二个和第三个输入要求仍然循环,是否有任何方法可以在需要其他输入的情况下立即退出? 欢迎任何建议

 import java.util.Scanner;
 import java.io.*;


 class Monday {
  public static void main(String[] args) {
    double n1,n2;
    boolean check = true;

    while(check) {
        System.out.println("Enter your operation: add, subtract, divide, multiply, or exit");
        Scanner myScan = new Scanner(System.in);
        String op = myScan.next();
        try {
            System.out.println("Enter your 1st number");
            try {
                n1 = myScan.nextDouble();
                System.out.println("Enter your 2nd number");
                n2 = myScan.nextDouble();
            } catch (Exception e) {
                System.out.println("This is my error");
                return;
            }

         /* System.out.println("Enter your 1st number");
            n1 = myScan.nextDouble();
            System.out.println("Enter your 2nd number");
            n2 = myScan.nextDouble();*/




            switch (op) {
                case"add":
                System.out.println("Your answer is "+ (n1 + n2));
                break;

                case"subtract":
                System.out.println("Your answer is "+ (n1 - n2));
                break;

                case"divide":
                System.out.println("Your answer is "+ (n1 / n2));
                break;

                case"multiply":
                System.out.println("Your answer is "+ (n1 * n2)) ;
                break;

                case"exit":
                System.out.println("Goodbye!");
                break;

            }


            if ("exit".equals(op))
            check = false;

        } catch (Exception e) {
            System.out.println("This is my error");

            System.exit(1);
        }
    }
}

}

【问题讨论】:

    标签: java try-catch


    【解决方案1】:

    你甚至不需要 try/catch。

    double n1, n2;
    System.out.println("Enter your 1st number");
    if (myScan.hasNextDouble()) n1 = myScan.nextDouble();
    else return;
    System.out.println("Enter your 2nd number");
    if (myScan.hasNextDouble()) n2 = myScan.nextDouble();
    else return;
    

    但如果你想使用它:

    double n1, n2;
    System.out.println("Enter your 1st number");
    try {
        n1 = myScan.nextDouble();
        System.out.println("Enter your 2nd number");
        n2 = myScan.nextDouble();
    } catch (Exception e) {
        System.out.println("This is my error");
        return;
    }
    

    【讨论】:

    • 很抱歉没有很好地解释自己,我希望程序在第一个问题“System.out.println(”输入你的操作:添加,减、除、乘或退出");"如果输入 exit 以使程序结束而不询问其他问题。
    • 谢谢你,但这不会影响下面的 switch 语句和循环吗?将无法编译,因为不再识别“字符串操作”。
    • 我已经放入了try catch,如图所示,程序仍然跳到第二个和第三个输入问题而不打印错误异常(“输入你的操作:加减除乘,或退出”)。此外,如果为第一个问题输入“退出”,则在程序完成之前第二个和第三个输入要求仍然循环,是否有任何方法可以在需要其他输入的情况下立即退出?欢迎任何建议
    • System.exit(1) 是如何退出
    • 谢谢,我在这里绝对是新手,所以不幸的是,这对我来说毫无意义。真的很感激帮助。我会回到起点,设计得更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多