Exception in thread "main".java.lang.StringIndexOutOfBoundsException

Exception in thread "main".java.lang.StringIndexOutOfBoundsException - Java - Programmation

Marsh Posté le 12-07-2006 à 16:38:57    

:hello: Bonjour,
Je travaille sous NetBeans et j'ai écrit un programme qui se compile sans problème mais lorsque je l'exécute, il m'annonce ceci :
 
Exception in thread "main" java.lang.StringOutOfBounds Exception: String index out of range: 0
 
Sauriez vous pas hasard à quoi cette erreur peut correspondre?
Je vous remercie d'avance pour votre aide !! ;)

Message cité 1 fois
Message édité par Didine95 le 12-07-2006 à 16:39:24
Reply

Marsh Posté le 12-07-2006 à 16:38:57   

Reply

Marsh Posté le 12-07-2006 à 16:42:47    

à un index qui déborde lors d'un parcours de chaine ?

Reply

Marsh Posté le 12-07-2006 à 16:50:22    

en fait j'effectue plusieurs traitements de chaines de caractères  :)  
et tout le début du traitement fonctionne correctement jusqu'au moment où j'ai cette erreur qui bloque sur une chaine de caractères
mais elle est semblable aux autres chaines précédentes donc j'ai du mal à cerner le réel problème rencontré lors de l'exécution de mon programme  :??:


Message édité par Didine95 le 12-07-2006 à 16:52:16
Reply

Marsh Posté le 12-07-2006 à 16:51:33    

Vérifie sa taille avant et compare ton index avec sa taille par exemple.

Reply

Marsh Posté le 12-07-2006 à 16:56:15    

_darkalt3_ a écrit :

Vérifie sa taille avant


ma chaine de caractères est toujours de longueur identique (80 caractères maximum)
 

_darkalt3_ a écrit :

compare ton index avec sa taille


quand tu parles de l'index: il est caracterisé par quoi un caractère de la chaine ou bien le buffer dans lequel est stocké la chaine?


Message édité par Didine95 le 12-07-2006 à 16:57:26
Reply

Marsh Posté le 12-07-2006 à 16:57:13    

tu peux poster le code où ca déconne ?

Reply

Marsh Posté le 12-07-2006 à 17:00:11    

ça risque d'être un peu long mais je vais essayé

Reply

Marsh Posté le 12-07-2006 à 17:04:19    

Sinon ce genre d'erreur peut etre provoquée quand tu parcours des strings et que tu débordes, ou que tu veux copier des strings dans des strings trop petites (je crois, ca fait longtemps que j'ai pas fait de java), ce genre de choses.

Reply

Marsh Posté le 12-07-2006 à 17:06:37    

Code :
  1. package interrégion;
  2. import java.io.*;
  3. public class Application {
  4.         public void Application(String région,BufferedReader in, BufferedWriter out, BufferedWriter out1, BufferedWriter out2) {             
  5.        try{   
  6.             //création des variables
  7.             String ligne_in; //Ligne du fichier texte d'entrée
  8.             String ligne_out; //Ligne du fichier texte de sortie
  9.             String TI; //Trame de la TI récupérée pour le fichier de sortie
  10.             String DEST;
  11.             int[][] dest=new int[4][4];
  12.             try{
  13.                 while((ligne_in=in.readLine())!=null){
  14.                     //TI type TS/TC/PS/TF/TL/TN
  15.                     if(((ligne_in.charAt(0)=='T')&&(ligne_in.charAt(1)=='S'))||((ligne_in.charAt(0)=='T')&&(ligne_in.charAt(1)=='C'))||((ligne_in.charAt(0)=='P')&&(ligne_in.charAt(1)=='S'))||((ligne_in.charAt(0)=='T')&&(ligne_in.charAt(1)=='F'))||((ligne_in.charAt(0)=='T')&&(ligne_in.charAt(1)=='L'))||((ligne_in.charAt(0)=='T')&&(ligne_in.charAt(1)=='N'))){                     
  16.                         TrameTS tramets=new TrameTS();
  17.                         TI=tramets.TrameTS(ligne_in,région);
  18.                         Destination destinataire=new Destination();
  19.                         dest=destinataire.Destination(ligne_in,ligne_in.substring(0,2));
  20.                         if(dest[0][1]==1){...}
  21. //...Suite du programme


 
le message d'erreur s'affiche pour la ligne du 'if' de la boucle 'while'


Message édité par Didine95 le 12-07-2006 à 17:07:48
Reply

Marsh Posté le 12-07-2006 à 17:10:54    

ça risque d'être un peu compliqué à résoudre  
je vais faire d'autres recherches demain
merci beaucoup pour cette petite aide  :)

Reply

Marsh Posté le 12-07-2006 à 17:10:54   

Reply

Marsh Posté le 12-07-2006 à 17:31:37    

Et si tu affichais (System.out.println) ce que ligne_in vaut, en particulier pour la premiere iteration?
Peut être qu'elle ne contient qu'un seul charactere (ou même une ligne vide), dans ce cas si tu fais charAt(1), c'est normal que t'auras une erreur de débordement...

Reply

Marsh Posté le 13-07-2006 à 08:50:46    

je vais vérifier mais mes lignes ne sont normalement jamais vides!

Reply

Marsh Posté le 13-07-2006 à 09:16:29    

try/catch autour de tes ligne_in.charAt(n)

Reply

Marsh Posté le 13-07-2006 à 09:31:21    

Didine95 a écrit :

je vais vérifier mais mes lignes ne sont normalement jamais vides!


Citation :

String index out of range: 0


 
Si, là tu as une ligne vide.
Moi, je vote et je dis que c'est la dernière ligne qui merde.

Code :
  1. while (in = ...) {
  2.   if (in.equals("" )) {
  3.     // on passe à l'itération suivante
  4.     continue;
  5.   }
  6. }


 

Citation :

try/catch autour de tes ligne_in.charAt(n)


[:vomi]
Ca serait vraiment crado d'utiliser la gestion d'exception pour combler une lacune dans l'algo ...


Message édité par Bidem le 13-07-2006 à 09:31:40
Reply

Marsh Posté le 13-07-2006 à 09:58:14    

Ca lui met en évidence l'endroit où se lève l'exception [:spamafote]
Chuis cependant d'accord pour que ca n'aparaisse pas dans l'algo final

Reply

Marsh Posté le 13-07-2006 à 13:08:51    

effectivement j'avais une ligne vide juste avant la fin du fichier

Reply

Marsh Posté le 13-07-2006 à 13:14:45    

néanmoins j'ai un problème similaire mais cette fois ci c'est pour un seul fichier et c'est devenu:
String index out of range : 80
 
Cela signifie que c'est la fin de ma ligne qui n'est pas correcte??

Reply

Marsh Posté le 13-07-2006 à 13:22:01    

Didine95 a écrit :

:hello: Bonjour,
Je travaille sous NetBeans et j'ai écrit un programme qui se compile sans problème mais lorsque je l'exécute, il m'annonce ceci :
 
Exception in thread "main" java.lang.StringOutOfBounds Exception: String index out of range: 0
 
Sauriez vous pas hasard à quoi cette erreur peut correspondre?
Je vous remercie d'avance pour votre aide !! ;)


 

Didine95 a écrit :

néanmoins j'ai un problème similaire mais cette fois ci c'est pour un seul fichier et c'est devenu:
String index out of range : 80
 
Cela signifie que c'est la fin de ma ligne qui n'est pas correcte??


Utilise le debuggeur de NetBeans.
Tu met un point d'arret (BreakPoint) et tu lance en mode debug, Tu vera ainsi ce que contiens ta chaine avant que ca plante.
 
 


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 13-07-2006 à 13:24:33    

zapan666 a écrit :

Utilise le debuggeur de NetBeans.
Tu met un point d'arret (BreakPoint) et tu lance en mode debug, Tu vera ainsi ce que contiens ta chaine avant que ca plante.


entendu je le fais  :)  

Reply

Marsh Posté le 13-07-2006 à 20:14:33    

bon ben j'ai résolu le problème  :wahoo:  
c t juste que la ligne qui engendrait l'erreur n'était pas écrite correctement  ;)  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed