Probleme inconnue (debutant]

Résolu
cs_gholiat Messages postés 4 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 1 août 2008 - 31 juil. 2008 à 20:57
cs_gholiat Messages postés 4 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 1 août 2008 - 1 août 2008 à 11:48
bonsoir, je voudrais s'il vous plait connaitre mon erreur dans le code suivant (je suis debutant en programation) :
***********************************************
public class Cripteur{

public static void main(String[] args) {
String str;
int j,i,k,s;
Lct lire=new Lct();
System.out.println ("Entrez le texte a cripté ^^ : ");
System.out.print ("-->");
str=lire.GetString();
str=str.replace(' ','7');
str=str.replace('b',' ');
str=str.replace('B',' ');
str=str.replace('o','8');
str=str.replace('O','8');
str=str.replace('s','1');
str=str.replace('S','1');
str=str.replace('f','1');
str=str.replace('F','1');
str=str.replace('r','1');
str=str.replace('R','1');
str=str.replace('a','1');
str=str.replace('A','1');
str=str.replace('l','1');
str=str.replace('L','1');
str=str.replace('h','1');
str=str.replace('H','1');
j=str.length();
char tab1[]=new char[j];
char tab2[]=new char[j];
for(i=0;i<j;i++);
{
tab1[i]=str.charAt(i);
}
for(k=0;k<j;k++)
{
for(s=(j-1);s>=0;s--)
{
tab2[s]=tab1[k];
}
}
for(i=0;i<j;i++)
{
str=str+tab2[i];
}
System.out.println ("Aprés criptage : ");
System.out.println (str);
}
}
***********************************************
quand je compile il n'ya pas d'erreur, mais a l'execution j'obtiend ce message:
*****************************************
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.charAt(String.java:687)
at Cripteur.main(Cripteur.java:41)
*****************************************
pour ce qui est de la class de lecture a partir du clavier la voila :
***************************************
import java.io.*;

public class Lct {
String str;
public String GetString()
{
try{
BufferedReader lecteur=new BufferedReader(new InputStreamReader(System.in));
str=(String)lecteur.readLine();
}
catch(IOException e)
{
System.err.println("Erreur "+e);
}
return str;
}
}
***********************************************
merci pour votre aide!^^

5 réponses

jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
31 juil. 2008 à 23:51
salut
j'ai pas essayé de comprendre ton code;mais d'apres l'erreur affichée j'ai remarqué que tu essais d'affecter une valeur d'une index du tableau qui depasse la taille de ton tableau
tu dois remplacer la boucle :
for(i= 0;i<j;i++);

     {

     tab1[i]=str.charAt(i);

     }

par
for(i=0;i<j -1 ;i++);

     {

     tab1[i] =str.charAt(i);

     }

Bon courage
3
jiidou Messages postés 48 Date d'inscription vendredi 31 août 2007 Statut Membre Dernière intervention 12 février 2009
1 août 2008 à 01:15
salut
je vois ke tu as encore des problèmes au niveau d'algorithmique;je te conseille de l'essayer avant de l'executer sur n'importe quel langage .

essai ce code ça doit marcher :

    char tab1[]=new char[j];
     char tab2[]=new char[j];
     for(i=0;i<j;i++){
     tab1[i]=str.charAt(i);
     }
     for(k=0;k<j;k++){
     tab2[j-k-1]=tab1[k];
     }
      for(i=0;i<j;i++){
     str=str+tab2[i];
     }
     System.out.println ("Aprés criptage : ");
     System.out.println (str);

Bon courage .
3
cs_gholiat Messages postés 4 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 00:10
merci beaucoup!! ^^ je voudrais encore posé une question car j'ai encore un probléme avec ce code:
**********************
     for(k=0;k<j;k++)

     {

     for(s=(j-1);s>=0;s--)

     {

     tab2[s]=tab1[k];

     }

     }

***********************
normalement cette boucle est faite pour mettre les caractéres du tableau 1 dans le tableau 2 mais a partir de la fin, le probleme c'est que quand ça ne fonctionne pas....
encore merci .
0
cs_gholiat Messages postés 4 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 11:38
merci, je crois que je doit refaire mon cours d'algorithmique!^^
pour ce qui est du code, non ça na pas marché.
encore merci pour ton aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_gholiat Messages postés 4 Date d'inscription jeudi 31 juillet 2008 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 11:48
voila j'ai trouvé l'erreur, c'été la variable "str" que j'avais initialisé au debut comme j'entrais MP je m'attendais a avoir PM comme reponse mais j'oublié que j'avais initialisé la variable "str" par MP alors la reponse été MPPM, il ma suffie de créée une nouvel variable String et de l'utilisé au lieu de la premiere variable.
merci de m'avoir aidé.

la vie est belle pour ceux qui savent vivre!
0
Rejoignez-nous