0
我遇到了一个有趣的问题。我创建了采取从命令行参数和提供做算术运算一个简单的java文件,为什么当传递*作为主要方法参数时会产生意想不到的结果?
e.g. java Test 2 3 5 + This gives output as 10 correctly
但当我 java Test 2 3 *
它抛出NumberFormatException
。然后,我查看了什么是获取通过参数的值,并看到文件夹中的所有文件名(我的java文件所在的地方)都以参数形式传递。
这是典型的情况吗?
我的代码是
class Test {
public static void main(String args[]) {
int sum = Integer.parseInt(args[0]);
for (int x = 1; x < args.length - 1; x++) {
int y = Integer.parseInt(args[x]);
if (args[args.length - 1].equals("+")) {
sum += y;
} else if (args[args.length - 1].equals("-")) {
sum -= y;
} else if (args[args.length - 1].equals("*")) {
sum *= y;
} else if (args[args.length - 1].equals("/")) {
sum /= y;
}
}
System.out.println(sum);
}
}
您是否在unix-ish系统/环境中? '*'会被shell解释为通配符,并扩展到当前目录中的任何文件名,所以你实际上可能调用'java 2 3 file1 file2 file3 etc ...''有'java 2 3 \ *'会修复问题 –
为了避免这种情况,您需要执行'java test 2 3'*'' –
*不是一个数字。你正在尝试哟分析int –