0

私が取り組んできた小さな電卓プロジェクトがついに (ほぼ) 完了しました。現在、加算、減算、乗算、除算、mod、2 乗、double の否定で動作し、"exit"、"clear"、"help" などの文字列に応答します。

コンソールに「最初の数字を入力してください」または「2番目の数字を入力してください」と言った後にユーザーが数字ではないものを入力するたびに、コンソールに「無効な入力」などのメッセージを返すようにtry and catchブロックを実装するのに助けが必要です。

私はいくつかの異なる方法をいじりましたが、何も機能していないようです。アドバイスをいただければ幸いです。コード:

import java.util.Scanner;


public class exit {

    static double num1;
    static double num2;
    static String operation;

    public static void main(String[] args) {

        boolean run = true;

        while (run) {

            System.out.println(" Enter: \n \b help for all usable operations \n continue to use the    calculator");
            Scanner input = new Scanner(System.in);
            String str1 = input.next();

            if (str1.equals("exit")) {

                System.exit(0);
            } else if (str1.equals("clear")) {

                System.out.println("0.0");
            } else if (str1.equals("help")) {
                System.out.println("please enter:\n + for addition \n - for subtraction \n * for     multiplication \n / for division \n -x for negation \n x^2 for squaring\n % for mod \n  remember to only input integer or double values\n");

            } else if (str1.equals("continue")) {

                System.out.println("\nEnter the first number:");
                num1 = input.nextInt();


                System.out.println
                        ("Display:" + num1);

                System.out.println("Please enter operation:");
                operation = input.next();


                System.out.println("Enter the second number:");
                num2 = input.nextInt();
                System.out.println("Display:" + num2);


                if ("+".equals(operation)) {

                    System.out.println((num1 + num2));
                } else if ("-".equals(operation)) {

                    System.out.println((num1 - num2));
                } else if ("/".equals(operation)) {

                    System.out.println((num1 / num2));
                } else if ("*".equals(operation)) {

                    System.out.println((num1 * num2));
                } else if ("-x".equals(operation)) {

                    System.out.println(-num1);
                } else if ("x^2".equals(operation)) {

                    System.out.println(num1 * num1);
                } else if ("sqrt".equals(operation)) {

                    System.out.println(Math.sqrt(num1));

                }


            }

        }
    }
}
4

2 に答える 2

3

を実装して number の有効性を確認するには、次のtry-catchようにします。

try{
    Double num = Double.parseDouble(input.nextLine()); // This is just a sample
    // int someInt = Integer.parseInt(someBasString); // Even this will throw NFE
}catch(NumberFormatException NFE){ // If its not a valid number, you'll get this exception
    // Do something on error
}
于 2013-10-11T10:14:20.063 に答える
0

これを使用できます

try{
num1 = input.nextInt();
..
num2 = input.nextInt();
}
catch(Exception ex)
{
  System.out.println("Invalid input")
}

「Exception」をキャッチする前に改善するには、「InputMismatchException」またはその他の予想される例外をキャッチできます。これにより、キャッチからより関連性の高い情報を表示できます。

于 2013-10-11T10:23:38.037 に答える