可能重复:
Java command line arguments. Using * as an argument for multiplication
我只是想写一个简单的计算器。 如果我输入2 * 3作为参数,则数组之后将如下所示:
[2,.classpath,.project,.settings,bin,src,3]
对于我们在“版本:Indigo Service Release 2”公司中的所有Eclipse安装,都会发生这种情况 构建ID:20120216-1857“
我的一个朋友没有这个问题,所以有人知道这个问题的根源吗?
问候
尼科
答案 0 :(得分:3)
参数*
被shell解释器替换为当前工作目录中的文件列表。这通常发生在Linux / Unix平台上,但不是(必然)发生在Windows上。你的朋友是否使用Windows机器?
换句话说,这与Java无关,而是与shell命令解释器无关,它在执行java
之前解释您的命令行。为避免这种情况,您需要引用敏感参数,例如java MyApp 2 '*' 3
。
答案 1 :(得分:0)
您正在命令行传递参数,其中'*'实际上是通配符;它将匹配当前目录中的所有文件(恰好是.classpath,.project,.settings,bin,src。)
答案 2 :(得分:0)
如果您在Unix下运行,这是命令行扩展的自然结果。使用\*
或"*"
。如果您使用的是Windows,则不会发生这种情况。