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。对于这么多问题我很抱歉,但我不想盲目地写一个程序而不清楚我实际在做什么。非常感谢你的帮助,再次抱歉这么多问题!
答案 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解释了命令行参数的工作原理。