函数无法接受java参数字符串[]args

函数无法接受java参数字符串[]args,java,Java,当我使用命令行给出参数时:OxOx#OxO uuy 它们应该是相同的,但后者返回空解。 我的算法是实现一些博弈论。我在Tic函数中使用了几个递归。 在这个主要方法中,当我使用测试时,我可以得到我的解决方案。然而,由于args也是String[]的类型,当我想要执行Tic(args)时,它根本不会执行递归,并且会得到一个空结果。 我试图通过将args转移到新字符串[]来修复它。但什么都不管用。我检查了函数的输入,没有发现错误。将其作为参数传递时,请尝试以下操作: public static

当我使用命令行给出参数时:OxOx#OxO uuy

它们应该是相同的,但后者返回空解。 我的算法是实现一些博弈论。我在Tic函数中使用了几个递归。 在这个主要方法中,当我使用测试时,我可以得到我的解决方案。然而,由于args也是String[]的类型,当我想要执行Tic(args)时,它根本不会执行递归,并且会得到一个空结果。
我试图通过将args转移到新字符串[]来修复它。但什么都不管用。我检查了函数的输入,没有发现错误。

将其作为参数传递时,请尝试以下操作:

    public static void main(String[] args){
    String[] test={"O","X","O","X","#","O","X","O","_","_","_","_","Y"};
    Tic(test);
    Tic(args);
}
然后

javac YourJavaFileName.java
hashkey停止了要读入args数组的行的其余部分,因此我在其周围添加了单引号

编辑: 在@Andreas进一步输入后:

  • 在基于Unix的系统中,#之后的任何内容都被视为注释 因此它没有读入args。这种情况在美国是不会发生的 然而,Windows操作系统

我犯了一个错误,我使用==表示值的相等,这实际上是引用。当我用String.equal()替换==时,可以正确地传递参数。我对java非常陌生,很抱歉这个愚蠢的问题。

你能给我们看一下Tic代码吗?你如何使用这些命令行参数运行应用程序?如果你只使用
test
连续多次运行应用程序,你会得到解决方案吗?也许它是有状态的?@Brunaldo它有点长,它是一个alpha-beta剪枝,播放TictatoE@Makoto java TictatoOxOx#OxO uuyMy Windows命令提示符与
没有问题。我相信你的答案可能是正确的,但它假设一个操作系统没有证据。奇怪。我在Mac OS上,没有单引号,这就是传递的内容:[O,X,O,X],有单引号,这就是传递的内容:[O,X,O,X,O,#,O,X,O,,,,,,,,,,Y]一点也不奇怪,因为在大多数Linux shell中,
是注释的开始,为什么我认为你的答案是正确的。Windows命令提示符不使用
#
进行注释,因此您的回答仅适用于Linux操作系统(包括Mac),您应该在回答中澄清这一点。您甚至可能想澄清原因,例如,
#
使行的其余部分成为注释。实际上,我使用的是Windows操作系统,就我在测试中所能做的而言,我可以看到#被正确地接受了。
java YourJavaFileName O X O X '#' O X O _ _ _ _ Y