A voir également:
- JAVA [null pointer Exception]
- 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
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java bible - Forum Téléchargement
3 réponses
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
27 avril 2007 à 12:29
27 avril 2007 à 12:29
Ton nullPointerException vient de là :
rt étant null tu ne peux pas appeler de méthode dessus.
Il faut instancier ton objet avant en faisant un new par exemple :
Runtime rt = null; rt.getRuntime();
rt étant null tu ne peux pas appeler de méthode dessus.
Il faut instancier ton objet avant en faisant un new par exemple :
rt = new Runtime(); // Utilise le bon constructeur pour ca, avec les parametres qu'il faut si nécessaires.
bonjour tout le monde!Je suis actuellement en train de faire un projet java qui consiste à évaluer une expression en affichant toutes les étapes et en utilisant une pile.Le problème est que depuis plusieurs jour je ne trouve pas l'erreur lorsque j'exécute le programme il me renvoi : java.lang.NullException
at Pile.sommet(pile.java:16)
at debut2.evaluation(debut2.java:139)
at debut2.main(debut2.java:16)
je sollicite votre aide Merci.
voici ce fameux programme :
import java.util.*;
import java.util.StringTokenizer;
public class debut2 {
public static void main (String args []) {
String ok=new String("oui");
do {
TextWindow.printLine("Donner l'expression a evaluer : ") ;
String expression=TextWindow.readString();
StringTokenizer e=new StringTokenizer(expression);
evaluation(e);
TextWindow.printLine("voulez vous recommencer?");
ok=TextWindow.readString();
} while(ok.equals("oui"));
}
public static void evaluation (StringTokenizer e) {
Pile p = new Pile();
String op=new String("+");
String w;
String z;
int b;
int c;
int resa;
String resb;
String ope;
while (e.hasMoreTokens()) {
String i = e.nextToken();
if (estunnombre(i)) {
p.empiler(i);
}
else if (estunoperateur(i)) {
if (estprioritaire(op,i)) {
p.empiler(e.nextToken());
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de si estprioritaire */
else {
if (!(resteexpression(p))) {
p.empiler(i); } /* fin !resteexpression */
else {
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de else */
op=i;
} /* fin de else */
} /* fin de else if */
} /* fin de while */
if (resteexpression(p)) {
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de if */
} /* fin de evaluation */
public static boolean estsuperieur(String premier , String deuxieme) {
if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {
return true; }
else if ((deuxieme.equals("+"))||(deuxieme.equals("-"))) {
if ((premier.equals("*"))||(premier.equals("/"))) {
return false; }
else {
return true; }
}
else { return false ; }
}
public static boolean estunnombre(String valeur) {
for (int i = 0; i < valeur.length(); i++) {
char c = valeur.charAt(i);
if(c<'0' || c>'9') return false;
}
return true;
}
public static boolean estunoperateur(String x) {
if (x.equals("+") || x.equals("-") || x.equals("*")|| x.equals("/")) {
return true; }
else { return false; }
}
public static int calculer(int x, String a,int y) {
if ( a.equals("+")) {
return x+y ; }
else if ( a.equals("*")) {
return x*y ; }
else if ( a.equals("-")) {
return x-y ; }
else if ( a.equals("/")) {
return x/y ; }
else return -1 ;
}
public static boolean estprioritaire(String premier , String deuxieme) {
if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {
return true; }
else { return false ; }
}
public static boolean resteexpression(Pile q) {
String a=q.sommet();
q.depiler();
if (q.pileVide()) {
q.empiler(a);
return false; }
else {
q.empiler(a);
return true; }
}
}
at Pile.sommet(pile.java:16)
at debut2.evaluation(debut2.java:139)
at debut2.main(debut2.java:16)
je sollicite votre aide Merci.
voici ce fameux programme :
import java.util.*;
import java.util.StringTokenizer;
public class debut2 {
public static void main (String args []) {
String ok=new String("oui");
do {
TextWindow.printLine("Donner l'expression a evaluer : ") ;
String expression=TextWindow.readString();
StringTokenizer e=new StringTokenizer(expression);
evaluation(e);
TextWindow.printLine("voulez vous recommencer?");
ok=TextWindow.readString();
} while(ok.equals("oui"));
}
public static void evaluation (StringTokenizer e) {
Pile p = new Pile();
String op=new String("+");
String w;
String z;
int b;
int c;
int resa;
String resb;
String ope;
while (e.hasMoreTokens()) {
String i = e.nextToken();
if (estunnombre(i)) {
p.empiler(i);
}
else if (estunoperateur(i)) {
if (estprioritaire(op,i)) {
p.empiler(e.nextToken());
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de si estprioritaire */
else {
if (!(resteexpression(p))) {
p.empiler(i); } /* fin !resteexpression */
else {
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de else */
op=i;
} /* fin de else */
} /* fin de else if */
} /* fin de while */
if (resteexpression(p)) {
w = p.sommet();
b=Integer.parseInt(w);
p.depiler();
ope = p.sommet();
p.depiler();
z = p.sommet();
c=Integer.parseInt(z);
p.depiler();
resa=calculer(b,ope,c);
resb=Integer.toString(resa);
p.empiler(resb);
} /* fin de if */
} /* fin de evaluation */
public static boolean estsuperieur(String premier , String deuxieme) {
if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {
return true; }
else if ((deuxieme.equals("+"))||(deuxieme.equals("-"))) {
if ((premier.equals("*"))||(premier.equals("/"))) {
return false; }
else {
return true; }
}
else { return false ; }
}
public static boolean estunnombre(String valeur) {
for (int i = 0; i < valeur.length(); i++) {
char c = valeur.charAt(i);
if(c<'0' || c>'9') return false;
}
return true;
}
public static boolean estunoperateur(String x) {
if (x.equals("+") || x.equals("-") || x.equals("*")|| x.equals("/")) {
return true; }
else { return false; }
}
public static int calculer(int x, String a,int y) {
if ( a.equals("+")) {
return x+y ; }
else if ( a.equals("*")) {
return x*y ; }
else if ( a.equals("-")) {
return x-y ; }
else if ( a.equals("/")) {
return x/y ; }
else return -1 ;
}
public static boolean estprioritaire(String premier , String deuxieme) {
if ( (deuxieme.equals("x"))||(deuxieme.equals("/"))) {
return true; }
else { return false ; }
}
public static boolean resteexpression(Pile q) {
String a=q.sommet();
q.depiler();
if (q.pileVide()) {
q.empiler(a);
return false; }
else {
q.empiler(a);
return true; }
}
}
Salut,
Pour le problème de taille de ta fenêtre, essaye d'enlever cette ligne à la fin de jbInit():
this.pack();
Pierro
Pour le problème de taille de ta fenêtre, essaye d'enlever cette ligne à la fin de jbInit():
this.pack();
Pierro
J'ai enlevé le this.pack() et la fenêtre s'ouvre correctement.
Je veux provoquer des actions sur click de la souris. Je modife le code en y ajoutant les lignes suivantes dans Jinit()
jButtonExplorer.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonExplorer_mouseClicked(e);
}
});
Je créé aussi la methode:
private void jButtonExplorer_mouseClicked(MouseEvent e) {
String commande;
commande = new String("C:\\WINDOWS\\explorer.exe");
lancerApplication(commande);
}
lancerApplication est le code corrigé donné plus haut . Mon but est de lancer une application de la machine grace à ce formulaire.
ça marche mais kan je clicke sur le bouton, l'action s'excécute deux fois. Ais je manqué quelque chose ?
Merci de me repondre
Merci
Je veux provoquer des actions sur click de la souris. Je modife le code en y ajoutant les lignes suivantes dans Jinit()
jButtonExplorer.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
jButtonExplorer_mouseClicked(e);
}
});
Je créé aussi la methode:
private void jButtonExplorer_mouseClicked(MouseEvent e) {
String commande;
commande = new String("C:\\WINDOWS\\explorer.exe");
lancerApplication(commande);
}
lancerApplication est le code corrigé donné plus haut . Mon but est de lancer une application de la machine grace à ce formulaire.
ça marche mais kan je clicke sur le bouton, l'action s'excécute deux fois. Ais je manqué quelque chose ?
Merci de me repondre
Merci
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
30 avril 2007 à 11:36
30 avril 2007 à 11:36
Je n'ai pas trop le temps de comprendre le code que tu as donné plus haut, mais le fait que tu ai l'action qui se fasse deux fois lorsque tu clique une seule fois sur ton bouton signifie que la fonction qui lance ton application est appelée deux fois.
Met des traceurs de log dans ton code pour voir par ou passe le programme exactement lorsque tu clique sur ton bouton.
Ainsi tu pourra déterminer quelle est l'erreur.
Met des traceurs de log dans ton code pour voir par ou passe le programme exactement lorsque tu clique sur ton bouton.
Ainsi tu pourra déterminer quelle est l'erreur.
27 avril 2007 à 14:29
Code corrigé :
27 avril 2007 à 14:53