首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JAVA中模拟二维表的类

在JAVA中模拟二维表的类
EN

Stack Overflow用户
提问于 2013-05-22 02:29:15
回答 3查看 117关注 0票数 0
代码语言:javascript
复制
public class table 
{
private int raw=0;
private int column=0;
private List<ArrayList<Integer>> TABLE ;
private static int COUNT_ELEMENTS_IN_RAW=0;
private static int COUNT_ELEMENTS_TOTAL=0;
private List<Integer> singleRaw ;
public table()
{
    TABLE = new ArrayList<ArrayList<Integer>>();
    singleRaw = new ArrayList<Integer>();
}
public void addELEMENT(Integer value)
{   
    if(!TABLE.equals(null))
    {

        singleRaw.addAll(TABLE.get(raw));
        singleRaw.add(value);
        COUNT_ELEMENTS_IN_RAW++;
        if(COUNT_ELEMENTS_IN_RAW%14==0)
        {
            raw++;
            COUNT_ELEMENTS_IN_RAW=0;
            COUNT_ELEMENTS_TOTAL++;
        }
    }
}
}

这里我试图模拟二维表(Xy),函数addELEMENT执行插入到“表”中。有没有人能解释一下为什么会出现这个错误?

代码语言:javascript
复制
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at pt.iul.poo.games.table.addELEMENT(table.java:27)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-22 02:37:42

你的问题出在这一行:

代码语言:javascript
复制
singleRaw.addAll(TABLE.get(raw));
                 ^^^^^^

您得到的异常信息非常丰富:

代码语言:javascript
复制
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

它告诉您List的大小为0,并且您尝试在raw为0的情况下获取元素,但是如果TABLE的大小为0,则不能获取大小为0的元素。您确实有一个List,但它是空的,您没有向其中插入任何内容。

您还应该将if(!TABLE.equals(null))更改为if(TABLE != null),因为如果TABLEnull,这将抛出一个NPE,因为它的计算结果为!null.equals(null)

此外,尝试遵循Java Naming Conventions并将TABLE更改为table,并将您的类更改为Table

票数 1
EN

Stack Overflow用户

发布于 2013-05-22 02:45:53

你见过Guava包含的集合类型吗?Table,它支持任何“行”类型和“列”类型的用例。

代码语言:javascript
复制
Table<Integer, Integer, String> table = HashBasedTable.create();
table.put(0, 0, "A"); // row 0, column 0
table.put(0, 1, "B"); // row 0, column 1

// One element
final String value = table.get(0, 1); // "B"

// Column 0
final Collection<String> strs = table.column(0).values();

// Row 1
final Collection<String> strs = table.row(1).values(); 
票数 2
EN

Stack Overflow用户

发布于 2013-05-22 02:40:25

看看这一行:

代码语言:javascript
复制
singleRaw.addAll(TABLE.get(raw));

有例外情况是因为

代码语言:javascript
复制
TABLE.get(raw)

表为空,因此无法获取索引0

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

https://stackoverflow.com/questions/16676988

复制
相关文章

相似问题

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