无法解决“java.lang.ArrayStoreException”

时间:2014-01-20 06:05:43

标签: java arrays

我正在编写基于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();
    }
}

3 个答案:

答案 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, '*');

一切都会按预期工作。