我可以用条件初始化数组吗?
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
语句之外可能会有用。
我想这就是我的问题?基本上,无论我尝试多少种方法,这段代码都不起作用。状态不会设置为给定的数组。
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
语句之外可能会有用。