-1
public class Eval {
    public static void main(String[] args) {

        int operand1;
        char exp1;
        int operand2;

        if (args.length != 3 ) {
            System.err.println("*** Program needs 3 arguements***");
            System.err.println("Usage: java Eval int1 exp int2");
            System.exit(1);
        }

        operand1 = Integer.parseInt(args[0]);

        exp1 = args[1].charAt(0);

        operand2 = Integer.parseInt(args[2]);


        System.out.print(args[0] + args[1] + args[2] + "=");

        switch(exp1){
            case('-'):
                System.out.println(operand1 - operand2);
                break;
            case('+'):
                System.out.println(operand1 + operand2);
                break;
            case('/'):
                System.out.println(operand1 / operand2);
                break;
            case('*'):
                System.out.println(operand1 * operand2);
                break;
            default:
                System.out.println(" Error.Invalid operator.");
        }
      }
    }

数学演算を行うプログラムです。現在、プログラムは整数の乗算以外はすべて実行できますが、なぜこのようなことが起こるのでしょうか? さらに、なぜ (Usuage: java Eval) 部分が必要なのですか? それがないと機能しません。これを回避する方法はありますか?最後に、引数が必要な理由。質問が多くて申し訳ありませんが、実際に何をしているのかを明確に理解していないまま盲目的にプログラムを書きたくありません。たくさんの質問をして申し訳ありません。

4

1 に答える 1

3

乗算の問題は Java ではなく、コマンド ライン自体にあります。この*文字はコマンド ラインでは特別なので、コマンド ラインでエスケープすれば問題ありません。

$ java Eval 6 * 9
*** Program needs 3 arguements***
Usage: java Eval int1 exp int2
$ java Eval 6 \* 9
6*9=54

ここで引数が必要なのは、Java がコマンド ライン引数を受け取り、mainパラメーターを介してプログラムに渡すためargsです。

プログラム、つまり JVM 自体java Evalを実際に実行しているからです。java最初の引数は、main実行するメソッドを含むクラスです。args他のすべてのコマンド ライン引数は、 のパラメータに渡されますmain

この件に関する Java チュートリアルでは、コマンドライン引数がどのように機能するかを説明しています。

于 2013-10-07T21:13:21.433 に答える