Java命令行参数。使用*作为乘法的参数

时间:2011-09-16 06:48:46

标签: java command-line-arguments

我正在尝试从命令行运行java计算器应用程序。参数如下:operator operand1 operand2。我可以为+和 - 成功运行java程序。
例如
java calc + 2 4
java calc - 10 4

但是当我试图运行时 java * 2 5

System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);

给出输出:
.classpath
.project
.settings

我通过反复试验发现使用单引号('*')解决了我的问题。 我现在有两个问题。
1.使用单引号是否正确? (java calc'*'2 5)
2. java命令行中*的含义是什么? (我试图在互联网上找到这个,但没有找到太多帮助)

谢谢, PUNIT

2 个答案:

答案 0 :(得分:13)

它不是Java,它是shell(cmd,如果你在Windows上),你正在使用它将*解释为“当前目录中的所有文件和文件夹”。

所以当你写:

java calc * 2 5

您实际上会为您的程序提供以下参数:

java calc file_1 file_2 ... file_n 2 5

其中file_1 ... file_n是当前目录中的所有文件(和文件夹)。

如果您不希望shell将*解释为您需要(正如您所注意到的)引用该参数的所有文件。

答案 1 :(得分:1)

如果引用命令参数,shell将不会将它们扩展为文件名。 '*'对java没有特殊意义,它是处理此输入的shell。