我正在编写基于2DArray的小型怪物游戏的代码。但是,在处理 ArrayStoreException 之前,我无法继续进行。我想通过使用 java.util.Arrays &来完成以下任务。的 Arrays.fill 即可。不要提出另一种方式。只是想解决这个问题。任何帮助将受到高度赞赏。提前谢谢....
package PlayWithStars;
import java.util.Arrays;
public class Monster {
static char battleBoard[][] = new char[10][10];
public void buildBattleBoard() {
for (char[] row : battleBoard) {
Arrays.fill(battleBoard,'*');
}
}
public void redrawBoard() {
for (int k=1 ; k<=30 ; k++) { //
System.out.print("-"); // to print ------------------
} //
System.out.println();
for (int i = 0; i < battleBoard.length; i++) {
for (int j = 0; j < battleBoard[i].length; j++) {
System.out.println("|"+battleBoard[i][j]+"|");
}
System.out.println("");
for (int k=1 ; k<=30 ; k++) { //
System.out.print("-"); // to print ------------------
} //
}
public static void main(String[] args) {
Monster m = new Monster();
m.buildBattleBoard();
}
}
答案 0 :(得分:5)
buildBattleBoard()
中的,
Arrays.fill(battleBoard,'*');
应为Arrays.fill(row,'*');
。你忘了在for-each循环中引用数组。
编译器使用Arrays.fill( Object[] , Object);
方法而不是Arrays.fill( char[] , char);
,因此在编译期间没有错误。
答案 1 :(得分:0)
Array.fill需要一个维数组,而你什么也没提供。
int i=0;
for (char[] row : battleBoard) {
Arrays.fill(battleBoard[i],'*');
i++;
}
答案 2 :(得分:0)
Arrays.fill(battleBoard, '*');
将以上代码行替换为:
Arrays.fill(row, '*');
一切都会按预期工作。