我可以用条件初始化数组吗?

Can I initialize an array with conditionals?

我想这就是我的问题?基本上,无论我尝试多少种方法,这段代码都不起作用。状态不会设置为给定的数组。

if(difficulty == "easy")  {
    state= new int[] {1,3,4,8,6,2,7,0,5};
    blankTile = 7;
    Node start = new Node(difficulty,state,blankTile);
    openList.add(start);
 }
 else if(difficulty == "medium")  {
    state= new int[] {2,8,1,0,4,3,7,6,5};
    blankTile = 3;
    Node start = new Node(difficulty,state,blankTile);
    openList.add(start);
 }
 else if(difficulty == "hard")  {
    state= new int[] {2,8,1,4,6,3,0,7,5};
    blankTile = 6;
    Node start = new Node(difficulty,state,blankTile);
    openList.add(start);

 }
 else if(difficulty == "worst"){  
    state= new int[] {5,6,7,4,0,8,3,2,1};
    blankTile = 4;
    Node start = new Node(difficulty,state,blankTile);
    openList.add(start);
 }

起初我在 Node 的构造函数中有这个,我只是在困难中传递,它会在构造函数中设置状态和 blankTile。但这也不起作用。有人愿意帮助我吗?

这不是您在 Java 中比较字符串的方式。您正在比较对字符串对象的两个引用是否相同,而不是字符串本身是否相同。

这就是 state 从未被分配的原因。

您需要使用String.equals()

if(difficulty.equals("easy"))  {
    state= new int[] {1,3,4,8,6,2,7,0,5};
    blankTile = 7;
    ...
 }
 else if(difficulty.equals("medium"))  {
    state= new int[] {2,8,1,0,4,3,7,6,5};
    blankTile = 3;
    ...
 }

作为旁注,您重复了这些行

Node start = new Node(difficulty,state,blankTile);
openList.add(start);

几次。将它们移到 if 语句之外可能会有用。