2010-12-14 141 views
0

我得到這個異常後,我運行我的代碼我不知道是什麼問題!如何解決這個異常:線程「主」異常java.lang.ArrayIndexOutOfBoundsException

程序最初創建int數組,然後是與int相同長度的字符串數組,然後採用v中的每個索引並將其轉換爲二進制,並且如果小於4的數字在操作後將其存儲在字符串索引中,則將其添加到零將字符串數組傳遞給方法調用toBinaryInteger返回int數組toBinaryInteger方法創建一個長度爲st.length * 4的數組,該數組應該是32,然後從st獲取每個entery並將其每個數字取出並將其存儲在p數組然後程序打印結果,但此時異常出現。我希望我能很好地解釋這個計劃。任何想法幫助請。

喜逢體問題的解決問題是我是印刷錯誤的陣列insted的結果,我印日特殊tankx爲調試好

public static void main(String [] arg) 
    { 
     int [] v={0,11,12,13,14,15,7,8}; 
     String [] st=new String [v.length]; 
     String x=""; 
     for(int i=0;i<st.length;i++) 
     { 
      x=Integer.toBinaryString(v[i]); 
      while (x.length()<4) // add zeroed to left if needed to fit in 4 bits 
       x="0"+x; 
      st[i]=x; 


     } 
     int [] result=toBinaryInteger(st); 
     int count=0; 
     for(int k=0;k<result.length;k++) 
     { 
      System.out.print(st[k]); 
      if(count==4){ 
       System.out.print(" "); 
       count=0; 
      } 

     } 



    } 






public static int [] toBinaryInteger(String [] s) 
    { 
     int [] p=new int [s.length*4]; 
     for(int i=0;i<s.length;i++) 
      { 
      for(int j=0; j<s[i].length();j++){ 
       p[i*4+j]=Integer.parseInt(s[i].substring(j,j+1));//create array of 32 lenght  

       } 
      } 
      return p; 
    } 
+1

是toBinaryInteger()實際返回一個相同大小的數組? – Mehrdad 2010-12-14 22:54:42

+5

**在哪裏** IndexOutOfBoundsException發生?如果您編譯進行調試,堆棧跟蹤會告訴您發生錯誤的特定行。 **這是第1步**在調試這個。 – 2010-12-14 22:56:00

+0

沒有誰說這實際上它返回的數組長度爲32 – Gain 2010-12-14 22:56:43

回答

2

我編譯你的代碼。產生的錯誤告訴我,這個問題似乎是這一行:

System.out.print(st[k]); 

也許你的意思是打印result[k]那裏呢?

+0

哦,上帝,你是一個很好的調試器。我錯過了,謝謝你,喜歡你的回答 – Gain 2010-12-14 23:02:07

相關問題