[java]Exception in thread "main" java.lang.StackOverflowError
Résolu
domxaline
-
domxaline -
domxaline -
6 réponses
Bonjour,
Le problème c'est que
Le problème c'est que
caracterDansChaine(String nom,char t), fait un
if (caracterDansChaine(nom,t))qui appelle donc la même méthode avec les même arguments, elle va donc encore faire un
if (caracterDansChaine(nom,t))puis encore un autre, et un autre, à l'infini, jusqu'à planter le programme...
j'avais rectifié comme vous avez dit,après exécution de prg,j'ai aucune erreur ni output
public class Test3
{
public static void main(String[] args)
{
String nom="KENNEDY";
char t='N';
//System.out.println(caracterDansChaine(nom, t));
}
//public static boolean caracterDansChaine()
public static boolean caracterDansChaine(String nom, char t)
{
//System.out.println("caracterDansChaine(nom="+nom+"",t=+t+);";
System.out.println("caracterDansChaine(nom="+nom+",t="+t);
if(caracterDansChaine(nom,t))
{
System.out.println("Le caractère"+t+"se trouve bien dans"+nom);
}
else
{
System.out.println("Le caractère"+t+" ne se trouve bien dans"+nom);
}
return false;
}
}
Tu n'as plus d'affichage parce que ton programme ne fait plus rien, dans ton main tu as commenté la ligne qui fait l'appel à la méthode. En gros ton programme actuel fait :
Normal qu'il n'y ait rien d'affiché...
public class Test3 { public static void main(String[] args) { String nom="KENNEDY"; char t='N'; } }
Normal qu'il n'y ait rien d'affiché...
quand j'enlève "//" devant System.out.println
public static void main(String[] args)
{
String nom="KENNEDY";
char t='N';
System.out.println(caracterDansChaine(nom, t));
}
j'ai un output:
caracterDansChaine(nom=KENNEDY,t=N
caracterDansChaine(nom=KENNEDY,t=N
caracterDansChaine(nom=KENNEDY,t=N......
......
je veux un output si
Le caractère N se trouve bien dans KENNEDY
Ça j'ai bien compris, mais pour l'instant ton code tourne en rond. D'où ton affichage, et ton exception. Essayes déjà de comprendre pourquoi, mon explication n'a pas l'air de t'avoir aidé, pourtant l'erreur est flagrante !
Donc comprends pourquoi ton code ne marche pas, et modifies ce qui ne vas pas pour que ça marche...
Donc comprends pourquoi ton code ne marche pas, et modifies ce qui ne vas pas pour que ça marche...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
voilà j'ai résolu mon prg
public class Test1
{
public static void main(String[] args)
{
char t='S';
String nom="KENNEDY";
if(caracterDansChaine(nom,t))
{
System.out.println("Le caracter "+t+"se trouve bien dans "+nom);
}
else
{
System.out.println("Le caracter "+t+" ne se trouve pas dans "+nom);
}
}
public static boolean caracterDansChaine(String chaine,char c)
{
boolean verite=false;
for(int i=0;i<chaine.length();i++)
{
if(chaine.charAt(i)==c)
{
verite=true;
break;
}
}
return verite;
}
}