数学运算条件语句

时间:2013-10-07 21:09:24

标签: java math conditional statements

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。对于这么多问题我很抱歉,但我不想盲目地写一个程序而不清楚我实际在做什么。非常感谢你的帮助,再次抱歉这么多问题!

1 个答案:

答案 0 :(得分: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接受命令行参数并通过main参数args将它们传递给您的程序。

你必须说java Eval,因为你真的在运行程序java - JVM本身。它的第一个参数是包含要运行的main方法的类。所有其他命令行参数都传递给args的{​​{1}}参数。

Java tutorial on the subject解释了命令行参数的工作原理。