A voir également:
- Erreur Java
- Erreur 0x80070643 - Accueil - Windows
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 mars 2014 à 09:22
23 mars 2014 à 09:22
Vu qu'on a pas tout ton code on ne peux pas tester, et comme on n'a pas non plus les numéros de lignes pour savoir à quoi correspond les lignes 29 et 40, c'est dur de retrouver l'erreur, d'autant que je doute que ce soit la seule.
En particulier quelles données manipules PILE ?
Si tu fais
En tout cas tu auras un problème sur
En particulier quelles données manipules PILE ?
Si tu fais
(String) PILE.depiler()il faut être sûr que c'est bien un String qui t'es renvoyé, si c'est un char, tu auras l'erreur décrite : Character cannot be cast to String
En tout cas tu auras un problème sur
while (PILE.voir() != "(")car il ne faut jamais comparer un String avec == ou != mais avec la méthode equals.
Bon, pour le equals ça fonctionne, maintenant j'ai d'autres erreurs...
voici ma classe Pile
package pileGenerique;
public class Pile<E> {
private int maxElements=1000;
private E elements[];
private int sommet;
public Pile() {
elements = (E[ ]) new Object[maxElements];
sommet = -1;
}
public void empiler(E nouvElem) {
if (sommet == (maxElements-1)) {
System.out.println("Desole, la pile est pleine!");
} else {
//on empile l'élément
sommet = sommet + 1;
elements[sommet] = nouvElem;
}
}
public E depiler() {
if (sommet < 0) {
System.out.println("Errreur: la pile est vide, on ne peut pas depiler!");
return (E) null;
} else {
E elemDuHaut = (E) elements[sommet];
sommet = sommet - 1;
return elemDuHaut;
}
}
public boolean vide(){
return sommet==-1;
}
public E voir(){
return(E) elements[sommet];
}
public String sommet(){
E elemDuHaut = elements[sommet];
sommet = sommet - 1;
return (String) (elemDuHaut);
}
}
Maintenant , j'ai cette erreur:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at expressionsInfixes.ConvertisseurInfixeEnSuffixe.convertirEnSuffixe(ConvertisseurInfixeEnSuffixe.java:28)
at TestProgramme.main(TestProgramme.java:28)
La ligne 28 dans TestProgramme c'Est :
expSuffixe= exp.convertirEnSuffixe(expInfix);
et la ligne 28 dans ConvertisseurInfixeEnSuffixe c'est :
if (estOperande(expression.charAt(i))){
Suffixe +=Character.toString(expression.charAt(i));
Je n'ai aucune erreur dans le code, c'Est juste quand je le lance que ça me donne ces erreurs. Pour les anciennes erreurs, la ligne 40 c'était
while (PILE.voir() != "(")
Merci
voici ma classe Pile
package pileGenerique;
public class Pile<E> {
private int maxElements=1000;
private E elements[];
private int sommet;
public Pile() {
elements = (E[ ]) new Object[maxElements];
sommet = -1;
}
public void empiler(E nouvElem) {
if (sommet == (maxElements-1)) {
System.out.println("Desole, la pile est pleine!");
} else {
//on empile l'élément
sommet = sommet + 1;
elements[sommet] = nouvElem;
}
}
public E depiler() {
if (sommet < 0) {
System.out.println("Errreur: la pile est vide, on ne peut pas depiler!");
return (E) null;
} else {
E elemDuHaut = (E) elements[sommet];
sommet = sommet - 1;
return elemDuHaut;
}
}
public boolean vide(){
return sommet==-1;
}
public E voir(){
return(E) elements[sommet];
}
public String sommet(){
E elemDuHaut = elements[sommet];
sommet = sommet - 1;
return (String) (elemDuHaut);
}
}
Maintenant , j'ai cette erreur:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 4
at java.lang.String.charAt(Unknown Source)
at expressionsInfixes.ConvertisseurInfixeEnSuffixe.convertirEnSuffixe(ConvertisseurInfixeEnSuffixe.java:28)
at TestProgramme.main(TestProgramme.java:28)
La ligne 28 dans TestProgramme c'Est :
expSuffixe= exp.convertirEnSuffixe(expInfix);
et la ligne 28 dans ConvertisseurInfixeEnSuffixe c'est :
if (estOperande(expression.charAt(i))){
Suffixe +=Character.toString(expression.charAt(i));
Je n'ai aucune erreur dans le code, c'Est juste quand je le lance que ça me donne ces erreurs. Pour les anciennes erreurs, la ligne 40 c'était
while (PILE.voir() != "(")
Merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
24 mars 2014 à 07:29
24 mars 2014 à 07:29
Vu que tu as défini une Pile<E> je commencerais déjà par déclarer
Sinon pour ton erreur c'est parce que tu as fait
pileGenerique.Pile<String> PILE = new pileGenerique.Pile<String> ();afin de spécifier que c'est bien des String que tu manipules ce qui évites d'avoir à faire tes casts
(String)un peu partout dans ton code...
Sinon pour ton erreur c'est parce que tu as fait
for(int i=1;i<=expression.length();i++)or les indices en Java commence à 0, il faut faire
for(int i=0;i<expression.length();i++)sinon tu vas avoir des StringIndexOutOfBoundsException lorsque i=expression.length()
23 mars 2014 à 22:03