-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) 部分是必要的——没有它就无法工作。有没有办法避免这样做?最后,为什么需要 args。对于这么多问题我很抱歉,但我不想盲目地编写一个对我实际在做什么没有清楚了解的程序。非常感谢您的所有帮助,再次为这么多问题感到抱歉!

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

这里 args 是必需的,因为 Java 接受命令行参数并通过mainparameter将它们传递给您的程序args

你必须说java Eval因为你真的在运行程序java——JVM 本身。它的第一个参数是包含main要运行的方法的类。所有其他命令行参数都传递argsmain.

有关该主题的Java 教程解释了命令行参数的工作原理。

于 2013-10-07T21:13:21.433 回答