我正在尝试从命令行运行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
答案 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。