Rajout d'une case dans un tableau de String

Rajout d'une case dans un tableau de String - Java - Programmation

Marsh Posté le 16-04-2011 à 16:02:59    

Bonjour,  
j'essaye de faire un programme qui a pour but d’insérer des crochets dans un chaîne de caractère  du type "pomme((carotte(radis)), chocolat(caramel))" je souhaite insérer un crochet ouvrant après la dernière parenthèse ouvrante et un crochet fermant avant la première parenthèse fermante, et cela pour chaque sous chaîne (avant la virgule) ce qui donnerai  
                             "pomme((carotte([radis])), chocolat([caramel]))"
 
Pour cela j'ai écris ce petit programme en java, mais cela ne marche pas, aidez moi a trouver le problème merci
 
lors de l’exécution de ce programme j'ai ceci comme erreur :  
 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at me.Main.main(Main.java:29)
 
Voici le code:
 
public class Main {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        String input= "pomme((carotte(radis)), chocolat(caramel))";
        String[] sentences = input.split("," );
         
   
 
   for (int i = 0; i < sentences.length; i++) {
    int l=0;
    char[] sentenceTab = sentences[i].toCharArray();
                                int leng=sentences.length+4;
                                 
                                char[] sentenceTab1 = sentences[leng].toCharArray();
 
    char c1=' ';
 
               int k;
    for(k =0; k < sentenceTab.length ; k++){
                                    for (l=0; l<sentenceTab1.length; l++)
                                      { sentenceTab1[l]=sentenceTab[k];
                                    }}
                                for (l=0; l<sentenceTab1.length+2; l++)
                                {   c1=sentenceTab[l];
                                        if (c1==')'){
                                            int v = l ;
                                            for (l=sentenceTab1.length+2; l>0; l--)
                                            {   sentenceTab1[l]=sentenceTab1[l-1];
                                                }
                                            sentenceTab1[v]=']';
 
                                }
                                }
                                for (l=sentenceTab1.length+2; l>0; l--)
                                {char c = sentenceTab[l-1];
                                 if (c== '('){
                                     int j=c;
                                     for (int v=sentenceTab1.length+2; v>0; v--)
                                     { sentenceTab1[v]=sentenceTab1[v-1];
                                     }
                                     sentenceTab1[j+1]='[';
                                 }
                                 
                                 }
                                    sentences[i] = String.copyValueOf(sentenceTab1);
 
                                }
                        input = "";
   for (int i = 0; i < sentences.length-1; i++) {
    input += sentences[i]+",";
                        }
                         
                        input+=sentences[sentences.length-1];
                        System.out.println(input);
    }
}


Message édité par samjda le 16-04-2011 à 19:36:59
Reply

Marsh Posté le 16-04-2011 à 16:02:59   

Reply

Marsh Posté le 16-04-2011 à 17:21:57    

Utilises la balise code et indente ton code, la c'est illisible.
 
Ensuite, ca ne marches pas,  c'est à dire?

Reply

Marsh Posté le 16-04-2011 à 18:11:55    

Désolée, voilà j'ai rectifiée...

Reply

Marsh Posté le 16-04-2011 à 19:52:04    

Utilises les balises code, comme ceci:

Code :
  1. int leng = sentences.length + 4;
  2. char[] sentenceTab1 = sentences[leng].toCharArray();


 
Ici ton entier leng est egal à la taille de ton tableau + 4, c'est donc normal que tu aies une Out of Bound exception ... Honnetement je ne comprends pas ce que tu veux faire ...

Reply

Sujets relatifs:

Leave a Replay

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