枚举数组抛出 ArrayStoreException
Enum Array throwing ArrayStoreException
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 x n 元素的对象时,它抛出一个 ArrayStoreException。我的数组充满了枚举常量,因此它应该是枚举类型。问题是什么?
当我实例化对象时出现这些错误:
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
Array.fill
期望用 Pebble[]
个实例填充您的 array
,而不是 Pebble
个实例。
您可以分别填充数组的每一行:
Arrays.fill(array[i], Pebble.EMPTY);
因此,要填充整个二维数组,请使用循环:
for (int i=0; i < array.length; i++)
Arrays.fill(array[i], Pebble.EMPTY);
勾选 docs:
Thrown to indicate that an attempt has been made to store the wrong type of object into an array of objects.
您正在尝试用类型为 Pebble
的 Pebble.EMPTY
填充数组。但是预期的类型是 Pebble[]
.
您可以这样做:
for (Pebble[] pbl: array)
Arrays.fill(pbl, Pebble.EMPTY);
我强烈建议在遇到 Java 异常时查看文档,它们通常非常详细和解释。
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 x n 元素的对象时,它抛出一个 ArrayStoreException。我的数组充满了枚举常量,因此它应该是枚举类型。问题是什么?
当我实例化对象时出现这些错误:
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
Array.fill
期望用 Pebble[]
个实例填充您的 array
,而不是 Pebble
个实例。
您可以分别填充数组的每一行:
Arrays.fill(array[i], Pebble.EMPTY);
因此,要填充整个二维数组,请使用循环:
for (int i=0; i < array.length; i++)
Arrays.fill(array[i], Pebble.EMPTY);
勾选 docs:
Thrown to indicate that an attempt has been made to store the wrong type of object into an array of objects.
您正在尝试用类型为 Pebble
的 Pebble.EMPTY
填充数组。但是预期的类型是 Pebble[]
.
您可以这样做:
for (Pebble[] pbl: array)
Arrays.fill(pbl, Pebble.EMPTY);
我强烈建议在遇到 Java 异常时查看文档,它们通常非常详细和解释。