2013-08-26 3 views
-1

Je scinde en une chaîne, mais je n'ai pas considéré l'exception. Donc l'erreur sort. Par exemple, si la chaîne est "2012-10-21,20: 00: 00 ,,"Comment résoudre ArrayIndexOutofBoundsException

Here is the codes: 
String str = "2012-10-21,20:00:00,,"; 
String a[] = str.split(","); 
String timestamp = a[0] + "T" + a[1]; 
String temp = a[2]; 


System.out.println(timestamp); 
System.out.println(temp); 

Voici l'erreur:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 

En fait, un [2] est nulle , mais je ne sais pas comment faire face à ce problème. Parce que dans ma chaîne de caractères, certains recodes contient la valeur de temp, comme "2012-10-21,20: 00: 00,90".

Merci.

+0

Non , a [2] n'est pas nul; ça n'existe pas. Votre tableau a seulement deux éléments - à l'index zéro et un. –

+0

Salut Ernest, En fait, j'ai un tableau String, certains d'entre eux ont une valeur de temp, mais certains sont null. – Eric

Répondre

0

Votre problème est dans cette ligne de code

String temp = a[2]; 

Il semble que vous avez seulement 2 éléments, et a [2] fait référence au troisième élément du tableau car l'indexation commence à 0, et non à 1. Votre 3e élément est en fait supprimé car il est vide.

Si vous voulez obtenir la taille d'un tableau pour éviter de sortir des limites, vous pouvez appeler la fonction sizeof sur votre tableau.

int main(){ 

     int myarray[3]; //an array of 3 intigers for example 

     cout << sizeof(myarray); //print the array size in bytes 
] 

The output of this will be "12"

La sortie est 12 parce que sizeof retournera la taille du tableau, et non le nombre d'éléments, donc int le cas de ints, qui sont 4 octets, vous obtenez 12.

+0

Merci pour votre réponse. J'ai une chaîne de caractères, certains recodes contient de la temp, donc je n'aurais pas d'erreur. Cependant, certains recodes comme celui-ci, aucune valeur temporaire, conduira à une exception hors limite. Alors, comment pourrais-je imprimer tous sans erreur. – Eric

+0

En général toujours, vraiment toujours vérifier la longueur du tableau avant de faire une supposition, cela éviterait non seulement des erreurs, mais est vraiment important pour le code de qualité. – michael81

+0

Pour obtenir la taille d'un tableau, vous pouvez simplement appeler la méthode "sizeof" sur le tableau. Soyez prudent, car la taille renvoie la taille de chaque objet dans le tableau, donc si vous avez un tableau de 3 ints, sizeof renverra le nombre 12, car un int est long de 4 octets. –

Questions connexes