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执行插入“表”。 任何人都可以解释我为什么给我这个错误?
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)
答案 0 :(得分:2)
您是否看到Guava
包含的集合类型? Table
,支持任何“行”类型和“列”类型的用例。
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();
答案 1 :(得分:1)
你的问题在这一行:
singleRaw.addAll(TABLE.get(raw));
^^^^^^
您获得的例外非常有用:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
它告诉您List
的大小为0,并且您正在尝试TABLE.get(raw));
raw
为0,但TABLE
}是大小为0,你可以将元素设置为0.你确实有一个List
,但它为空,你没有插入任何东西。
您还应该将if(!TABLE.equals(null))
更改为if(TABLE != null)
,因为如果TABLE
为null
,则会抛出 NPE ,因为它是&#39;将被评估为!null.equals(null)
另外,请尝试关注Java Naming Conventions并将TABLE
更改为表格,将您的课程更改为Table
。
答案 2 :(得分:1)
看看行:
singleRaw.addAll(TABLE.get(raw));
因
而有例外TABLE.get(raw)
TABLE为空,因此无法获取索引0