Erreur sur une méthode de saisie

Résolu/Fermé
masema95 Messages postés 5 Date d'inscription lundi 18 juin 2012 Statut Membre Dernière intervention 28 février 2015 - 28 févr. 2015 à 17:31
masema95 Messages postés 5 Date d'inscription lundi 18 juin 2012 Statut Membre Dernière intervention 28 février 2015 - 28 févr. 2015 à 18:19
Bonsoir,

J'ai implémenter une méthode, et j'ai une exception qui est lancée à l'execution de celle-ci.

Voici mon code et quelques explications:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Immatriculation {
	private static final String SEPARATEUR = "-";
	protected String serie;
	protected String code1, code2;

	public Immatriculation (String immatriculation){
		estSplittee(immatriculation);
	}
	
	public void estSplittee(String immatriculation){/*méthode qui permet à partir d'une chaine d'obtenir la plaque avec separateur*/
		String [] tabSplit = immatriculation.split(SEPARATEUR);
		ArrayList <String>arlSplit = new ArrayList<String>(Arrays.asList(tabSplit));
		code1 = arlSplit.get(0);
		serie = arlSplit.get(1);
		code2 = arlSplit.get(2);
	}
	
	public void saisie(){
		String s;/*string qui va être attribuée à chaque param*/
		Scanner sc = new Scanner(System.in);
		s = sc.next();
		if (!s.contains(SEPARATEUR)){
			System.err.println("Ce n'est pas un numero de plaque");
		}
		else estSplittee(s);
		
		sc.close();
	}
		
	public static void main(String[]argvs){
		
		Immatriculation immatriculation1 = new Immatriculation();
		System.out.println(immatriculation1);
		immatriculation1.saisie();
		System.out.println(immatriculation1);
	}
}

Donc jusqu'ici mon code fonctionne. Maintenant je veux appeler la méthode saisie() dans un autre méthode d'une autre classe (Vehicule) et c'est la que j'ai une erreur.

Ma classe Vehicule:
import java.util.Scanner;

/*un véhicule est identifié par sa plaque d'immatriculation*/
public class Vehicule {
	protected Immatriculation plaque;
	protected Type_Vehicule type;

	public Vehicule(){}
	
	public Vehicule(Immatriculation plaque, Type_Vehicule type){
		this.plaque = plaque;
		this.type = type;
	}
	
	public Immatriculation getPlaque(){
		return plaque;
	}
	public Type_Vehicule getType(){
		return type;
	}
	
	public void setPlaque(Immatriculation plaque){
		this.plaque = plaque;
	}
	
	public void setType(Type_Vehicule type){
		this.type = type;
	}
	
	public String toString(){
		String ch = "";
		ch+= "---Immatriculation : " + getPlaque();
		ch+= "\n---Type : " + getType() ;
		
		return ch;
	}
	
	public void saisie(){/*saisie du véhicule*/
		System.out.println("Renseigner immatriculation");
		getPlaque().saisie();
		/*if(!immatriculationValide()){
		while(!immatriculationValide()){
			System.err.println("Plaque d'immatriculation invalide: réessayez");
			plaque.saisie();
		System.out.println("Saisie immatriculation ok");
		}}*/
			
		
		System.out.println("Renseigner type de vehicule");
			choixType();
		
	}
	
	private void choixType() {
		int choix;
		
		System.out.println("1---MOTO");
		System.out.println("2---VOITURE");
		System.out.println("3---VELO");
		System.out.println("4---CAMION");
		System.out.println("5---HELICOPTERE");
		System.out.println("Entrer le numéro correspondant: ");
		Scanner sc = new Scanner(System.in);
		choix = sc.nextInt();
		
		switch(choix){
			case 1: setType(Type_Vehicule.MOTO);break;
			case 2: setType(Type_Vehicule.VOITURE);break;
			case 3: setType(Type_Vehicule.VELO);break;
			case 4: setType(Type_Vehicule.CAMION);break;
			case 5: setType(Type_Vehicule.HELICOPTERE);break;
			default: setType(Type_Vehicule.VOITURE);break;		
		}
		
	}

	public boolean immatriculationValide(){
		/*
			serie est un nombre de 3 lettre exactement
			code1 et code 2 ne sont pas des nombre et sont de longueur 2 exactement
		*/
		
		return(plaque.estUnNombre(plaque.getSerie()) && !plaque.estUnNombre(plaque.getCode1()) && !plaque.estUnNombre(plaque.getCode2()) &&
				plaque.getSerie().length()==3 && plaque.getCode1().length()==2 && plaque.getCode2().length()==2);
	}
	
	public static void main(String[] argvs){
		Vehicule v = new Vehicule();
		v.saisie();
		System.out.println(v);	
	}
}

Et quand je compile, j'ai l'affichage suivant:

Renseigner immatriculation
Exception in thread "main" java.lang.NullPointerException
	at Vehicule.saisie(Vehicule.java:40)
	at Vehicule.main(Vehicule.java:89)


Je n'arrive pas à voir où est le problème. Si quelqu'un pouvait m'aider svp ce serait gentil

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
28 févr. 2015 à 17:46
getPlaque() retourne une valeur nulle.
A toi de voir pourquoi.
0
masema95 Messages postés 5 Date d'inscription lundi 18 juin 2012 Statut Membre Dernière intervention 28 février 2015
28 févr. 2015 à 18:19
Ah oui parce qu'elle n'est instanciée à aucun moment...
Merci beaucoup pour le coup de main.
0