首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Enum阵列抛出ArrayStoreException

Enum阵列抛出ArrayStoreException
EN

Stack Overflow用户
提问于 2015-11-29 07:43:30
回答 2查看 240关注 0票数 0
代码语言:javascript
复制
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类型。有什么问题吗?

当我实例化对象时,我得到以下错误:

代码语言:javascript
复制
 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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-29 07:45:22

Array.fill希望用Pebble[]实例填充array,而不是Pebble实例。

可以用以下内容分别填充数组的每一行:

代码语言:javascript
复制
Arrays.fill(array[i], Pebble.EMPTY);

因此,要填充整个2D数组,使用一个循环:

代码语言:javascript
复制
for (int i=0; i < array.length; i++)
    Arrays.fill(array[i], Pebble.EMPTY);
票数 0
EN

Stack Overflow用户

发布于 2015-11-29 07:45:58

检查文档

引发,以指示已尝试将错误类型的对象存储到对象数组中。

您正在尝试用Pebble.EMPTY填充数组,该数组的类型为Pebble。但预期的类型是Pebble[]

你可以这样做:

代码语言:javascript
复制
for (Pebble[] pbl: array)
    Arrays.fill(pbl, Pebble.EMPTY);

我强烈建议在获得Java异常时检查文档,它们通常非常详细并解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33980546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档