IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

erreur java.lang.NullPointerException a l'execution


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Simple quidam
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Simple quidam
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut erreur java.lang.NullPointerException a l'execution
    Bonjour,

    Je dois réaliser dans le cadre d'un exercice le programme suivant :


    Écrire un programme qui parcourt une expression arithmétique saisie sous la forme d’une
    chaîne de caractères et qui utilise une pile pour vérifier si cette expression est correctement parenthésée.
    Exemples :
    « (5 +3) » est bien parenthésé.
    « ((5 +(3))) » est bien parenthésé.
    « 5 +3) » est mal parenthésé.
    Le principe consiste à parcourir la chaîne de caractères
    • en empilant toute nouvelle parenthèse ouvrante lue
    et
    • en dépilant une parenthèse lors de l’arrivée d’une parenthèse fermante.


    En me basant sur mon cours j'ai créé l'interface suivante :

    Je pars du postulat suivant :

    J'enregistre la chaine de caractère à l'aide d'un scanner
    Je la parse le String en détectant les '(' ')' , quand j'ai un '(' je le rajoute dans la pile de type vecteur (pour ne pas être limité par la taille d'un tableau) , quand j'ai un ')' je dépile un élément, si l'expression est correctement écrite, la hauteur de pile finale doit être de 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    package exercice3;
     
    interface Pile<T> { 
     
    	boolean estVide();
    	Pile<T> push(T e);
    	T getTop();
    	Pile<T> pop();
     
    }
    Puis la classe qui l'implémente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    package exercice3;
     
    import java.util.*;
     
    public class VectMath01<T> implements Pile<T> {
     
     
    	private Vector<T> tab;
     
     
    	public VectMath01( Vector<T> tab ) { // constructeur de l'objet
     
    		tab = this.tab;
     
    	}
     
     
    	public boolean estVide() {
     
    		return tab.isEmpty();
     
    	}
     
     
    	public Pile<T> push(T e) {
     
    		tab.addElement(e);
    		return this;
     
    	}
     
    	public T getTop() {
     
    		if (tab.isEmpty() == true) {
     
    			throw new IllegalArgumentException("Pile vide");
     
    		} else {
     
    			return (this.tab).lastElement();
    		}
    	}
     
     
    	public Pile<T> pop() {
     
    		if (tab.isEmpty() == true ) {
     
    			throw new IllegalArgumentException("Pile vide" );
     
    		} else {
     
    			tab.remove(this.getTop());
     
    			return this;
    		}
    	}
     
    }
    Et la classe contenant le Main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    package exercice3;
     
    import java.util.*;
     
    public class ExpressionMathematique {
     
    	public static void main(String[] args) {
     
    		String str;
    		char c;
     
    		Vector<Character> vc1 = new Vector<Character>();
    		Pile<Character> p01 = new VectMath01<Character>(vc1);
     
    		str = inputUser();
     
    		for (int i = 0 ; i < str.length(); i++) { 
     
    			c = (char) str.charAt(i);
     
    			if ( c == '(' ) {
     
    				p01 = p01.push(c);
     
    			} else if ( c == ')' ) {
     
    				p01 = p01.pop();
     
    			}  
     
    		}
     
    		if ( p01.getTop() == 0 ) {
     
    			System.out.println("L'expression est bien écrite");
     
    		} else {
     
    			System.out.println("L'expression est male écrite veuillez vérifier la syntaxe");	
     
    		}
     
    	}
     
    	public static String inputUser() {
     
    		String expression;
     
    		Scanner sc = new Scanner(System.in); 
     
    		System.out.println("Entrez l'expression: ");
     
    		expression = sc.nextLine(); 
     
    		sc.close();
     
    		return expression;
     
    	}
     
    }
    A l'exécution la console me retourne l'erreur suivante :

    Exception in thread "main" java.lang.NullPointerException
    at exercice3.VectMath01.getTop(VectMath01.java:34)
    at exercice3.ExpressionMathematique.main(ExpressionMathematique.java:33)

    Je suis encore bien novice en java (et en programmation en général) et je m’emmêle encore un peu les pinceaux avec la manipulation des objets.

    En vous remerciant par avance je bute depuis un moment sur ce soucis (j'espère ne pas être hors charte :/ )

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Tu n'instancie jamais

    puis tu essaye de l'utiliser. Et donc comme il est NULL, ben tu as un NullPointerException.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut Problème d'affectation
    Bonjour,

    Le problème doit se situer dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public VectMath01( Vector<T> tab ) { // constructeur de l'objet
     
            tab = this.tab;
      }
    Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public VectMath01( Vector<T> tab ) { // constructeur de l'objet
     
            this.tab = tab;
      }

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 096
    Par défaut
    Citation Envoyé par Cincinnatus Voir le message
    Le problème doit se situer dans le constructeur :
    Bien vu
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Candidat au Club
    Homme Profil pro
    Simple quidam
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Simple quidam
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Han mais .... la honte :/

    Merci !

  6. #6
    Candidat au Club
    Homme Profil pro
    Simple quidam
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Simple quidam
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Par défaut
    Bon par contre mon programme ne fonctionne pas, il faut je pense faire 2 piles et ensuite comparer la taille des 2

    merci encore de votre aide

  7. #7
    Membre émérite Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 593
    Par défaut
    Citation Envoyé par isamu1024 Voir le message
    Han mais .... la honte :/

    Merci !
    Ce n'est pas grave ! On fait tous ce genre de boulettes un jour. Ma dernière : laisser un "return null;" dans une méthode générée par l'EDI...

Discussions similaires

  1. Erreur java. lang.NullPointerException
    Par hicham.gi dans le forum Struts 1
    Réponses: 17
    Dernier message: 03/06/2009, 11h11
  2. Réponses: 0
    Dernier message: 26/12/2007, 17h28
  3. Réponses: 32
    Dernier message: 20/04/2007, 21h56
  4. [Débutant] Erreur java.lang.NullPointerException
    Par Kevin12 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/02/2007, 15h48
  5. Probleme erreur java.lang.NullPointerException
    Par Tsukaasa dans le forum Langage
    Réponses: 4
    Dernier message: 25/05/2006, 18h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo