import java.util.Arrays;
import java.util.Random;
enum Pebble
{
X,O,EMPTY;
}
public class Board
{
private int count;
private Pebble[][] array;
public Board(int n)
{
array = new Pebble[n][n];
Arrays.fill(array, Pebble.EMPTY);
}...当我创建一个n×n元素的对象时,它会抛出一个ArrayStoreException。我的数组中填充了Enum常量,因此它应该是Enum类型。有什么问题吗?
当我实例化对象时,我得到以下错误:
Board b = new Board(6);
run:
Exception in thread "main" java.lang.ArrayStoreException: board.Pebble
at java.util.Arrays.fill(Arrays.java:3130)
at board.Board.<init>(Board.java:28)
at board.Tester.main(Tester.java:18)Java结果:1
发布于 2015-11-29 07:45:22
Array.fill希望用Pebble[]实例填充array,而不是Pebble实例。
可以用以下内容分别填充数组的每一行:
Arrays.fill(array[i], Pebble.EMPTY);因此,要填充整个2D数组,使用一个循环:
for (int i=0; i < array.length; i++)
Arrays.fill(array[i], Pebble.EMPTY);发布于 2015-11-29 07:45:58
检查文档
引发,以指示已尝试将错误类型的对象存储到对象数组中。
您正在尝试用Pebble.EMPTY填充数组,该数组的类型为Pebble。但预期的类型是Pebble[]。
你可以这样做:
for (Pebble[] pbl: array)
Arrays.fill(pbl, Pebble.EMPTY);我强烈建议在获得Java异常时检查文档,它们通常非常详细并解释。
https://stackoverflow.com/questions/33980546
复制相似问题