如何解决线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:2?

时间:2014-05-31 07:22:33

标签: java arrays linked-list

有人可以帮我解决这类错误

  

线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:2

我在链表中​​搜索数据但是当我想将数据插入数组时,它会变成这样:

matric | nama | sem | cc | ch | fm  
32255 | izzat | 1 | ccs2 | 3 | 45.0  
      |      | 2 | ccs3 | 3 | 56.0  
32345 | khai] | 3 | ccs4 | 3 | 45.0  
      |      | 2 | ccs5 | 3 | 2.0  
32246 | fifi | 1 | cc1 | 3 | 60.0  
      |      | 1 | ccs3 | 4 | 34.0  
34567 | dudu | 2 | ccs2 | 2 | 24.0  
      |      | 2 | ccs4 | 6 | 79.0 
first-->34567-->32246-->32345-->32255-->null  
first-->6-->2-->4-->3-->3-->3-->3-->3-->null  
first-->2-->2-->1-->1-->2-->3-->2-->1-->null  
first-->dudu-->fifi-->khai]-->izzat-->null  
first-->ccs4-->ccs2-->ccs3-->cc1-->ccs5-->ccs4-->ccs3-->ccs2-->null  
first-->79.0-->24.0-->34.0-->60.0-->2.0-->45.0-->56.0-->45.0-->null 

42insert matric= 032345  
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2  
2  
khai]  
2  
3  
    at inputoutput.LinkedList.getcc(LinkedList.java:141)  
    at inputoutput.baca.getcc(baca.java:84)  
    at inputoutput.Inputoutput.main(Inputoutput.java:75)  
 Java Result: 1  
 BUILD SUCCESSFUL (total time: 7 seconds)  

代码:

String[] getcc(int mat,int sub) {
    ListObject2 current = first2;
            int count=0;
            String b[]=new String[2] ;//2 is the subject number==sub

            int x=0;

            while (current!=null ) {

                        if(count==((mat*sub)+x) && ((mat*sub)+0)<((mat*sub)+x)<<((mat*sub)+sub)){

                          b[x]=current.data2;
                             x++;

                        }
        current=current.next;
                    count++;        
    }
    return b;
}

但如果搜索链接列表中的最后一个数据 032255

,我会得到输入

这是输出:

 matric | nama | sem | cc | ch | fm  
 32255 | izzat | 1 | ccs2 | 3 | 45.0  
       |      | 2 | ccs3 | 3 | 56.0  
 32345 | khai] | 3 | ccs4 | 3 | 45.0  
       |      | 2 | ccs5 | 3 | 2.0  
 32246 | fifi | 1 | cc1 | 3 | 60.0  
       |      | 1 | ccs3 | 4 | 34.0  
 34567 | dudu | 2 | ccs2 | 2 | 24.0  
       |      | 2 | ccs4 | 6 | 79.0 

   first-->34567-->32246-->32345-->32255-->null  
   first-->6-->2-->4-->3-->3-->3-->3-->3-->null  
   first-->2-->2-->1-->1-->2-->3-->2-->1-->null  
   first-->dudu-->fifi-->khai]-->izzat-->null  
   first-->ccs4-->ccs2-->ccs3-->cc1-->ccs5-->ccs4-->ccs3-->ccs2-->null  
   first-->79.0-->24.0-->34.0-->60.0-->2.0-->45.0-->56.0-->45.0-->null 

   42insert matric= 032255  
   3  
   izzat  
   2  
   1  
   ccs3//the data i want to search  
   ccs2//

1 个答案:

答案 0 :(得分:0)

在走列表时,你要进入if语句两次以上。如果你这样做,你将超越b数组的边界(它只能容纳两个值)。您应该使用ArrayList,以便根据需要添加任意数量的项目。