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

时间:2015-09-23 23:11:33

标签: java arrays constructor initialization

我认为这是我的问题?基本上,无论我尝试多少种方式,这些代码都不会起作用。国家不会设置为给定的数组。

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的构造函数中有这个,我只是传递难度,它会在构造函数中设置state和blankTile。但那也不起作用。有人会帮助我吗?

1 个答案:

答案 0 :(得分:2)

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

这就是永远不会分配createuser -P -U pgsql testuser 的原因。

您需要使用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); 语句之外可能很有用。