2010-12-14 98 views
0

i a cette exception après que je lance mon code, je ne sais pas quel est le problème !! Le programme crée initialement int array puis string array avec la même longueur que int, puis prend chaque index dans v et le convertit en binaire et ajoute des zéros si les chiffres sont inférieurs à 4 puis le stocke dans l'index de chaîne après manipulation le tableau de chaînes qu'il passe à la méthode Appelée toBinaryInteger qui renvoie int array la méthode toBinaryInteger crée un tableau de longueur st.length * 4 qui est supposé être 32 puis prend chaque entée de st et prend chaque chiffre de celui-ci et le st array alors le programme imprime le résultat mais l'exception est affichée à ce moment. J'espère que j'explique très bien le programme. toute idée aide s'il vous plaît.comment résoudre cette exception: Exception dans le thread « principal » java.lang.ArrayIndexOutOfBoundsException

Salut tout le problème du corps résolu le problème est que je l'impression du mauvais tableau insted de résultat i st imprimé tankx spécial pour le bon débogueur

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

Est-ce que toBinaryInteger() renvoie un tableau de la même taille? – Mehrdad

+5

** Où ** est-ce que 'IndexOutOfBoundsException' se produit? Si vous compilez pour le débogage, la trace de la pile vous indiquera la ligne spécifique sur laquelle l'erreur se produit. ** C'est l'étape 1 ** du débogage. –

+0

non qui a dit qu'actuellement il renvoie un tableau de longueur 32 – Gain

Répondre

2

Je compilé votre code. L'erreur résultant m'a dit que le problème semble être cette ligne:

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

Peut-être que vous vouliez imprimer result[k] il à la place?

+0

oh mon dieu, vous êtes un bon débogueur sérieusement. je l'ai raté merci. comme à votre réponse – Gain