2013-05-21 4 views
0
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++; 
     } 
    } 
} 
} 

여기서 2 차원 테이블 (xy)을 시뮬레이트하려고하면 addELEMENT 함수가 "테이블"에 삽입을 수행합니다. 아무도 나에게 그 오류를 왜 설명 할 수 있습니까?Java에서 2 차원 테이블을 시뮬레이트하는 클래스

singleRaw.addAll(TABLE.get(raw)); 
       ^^^^^^ 

당신이 얻고있는예외는 매우 유익 :

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

건조한 또는 빈 Arraylist에서 주스를 쥐어 짜는 것 같습니다. – Smit

+0

TABLE! = null로 변경되었지만 동일한 오류가 발생했습니다. –

답변

1

귀하의 문제는이 라인에 그것은 List 크기 0의 있음을 말하고

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 

, 당신은 TABLE.get(raw));을 시도하고 있는데, 여기서 raw은 0이지만, TABLE의 크기가 0이면 y o 수 없습니다 0에서 요소를 가져옵니다. List 있지만 비어 있습니다, 아무 것도 삽입하지 않았습니다. TABLEnull 경우, 이것은 NPE가 발생하기 때문에이 또한 !null.equals(null)

로 평가 될 것이기 때문에

또한, if(TABLE != null)if(!TABLE.equals(null))을 변경해야합니다, Java Naming Conventions를 따라 테이블에 TABLE을 변경하려고 당신의 ~ Table. 라인에서

+0

해결 방법은 있습니까? –

+0

요소를 가져 오기 전에 요소를'TABLE'에 삽입하십시오. – Maroun

+0

Thanks @Maroun Maroun;) –

1

봐는 :

singleRaw.addAll(TABLE.get(raw)); 

때문에

TABLE.get(raw) 

표를 제외하고는 0

+0

물론 실수요 :) – michal

+0

댓글 삭제 .. – Smit

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(); 
+0

Paul Vargas;) –