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 :

Méthode qui renvoie un NullPointerException


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Points : 28
    Points
    28
    Par défaut Méthode qui renvoie un NullPointerException
    Bonsoir,
    J'ai voulu créer une méthode pour alléger le main, du coup ça ne marche plus,
    j'utilise 3 class, j'ai une class pour manipuler des images, une pour faire un menu et la dernière pour 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
    import java.io.*;
    import java.util.Scanner;
     
    public class Bitmap {
        Scanner sc = new Scanner(System.in);
        int[][][]data;
        String nom;
        ImageExterne ie;
        Bitmap(String n) throws IOException, FileNotFoundException {
            this.ie=new ImageExterneLue(n);
            this.nom=n;
            this.data=((ImageExterneLue)ie).getTableau();
        }
        Bitmap(int largeur, int hauteur){
            this.data=new int[largeur][hauteur][3];
            for(int x=0;x<this.data.length;x++){
                        for(int y=0;y<this.data[0].length;y++){
                                this.data[x][y][0]=0;
                                this.data[x][y][1]=255;
                                this.data[x][y][2]=0;
                        }
            }
            this.nom=null;
            this.ie=new ImageExterneCree(this.data);
        }
     
        void ouvrirImage() throws IOException, FileNotFoundException{
        try{
        System.out.println("nom de l'image à ouvrir:");
            String nomImg=sc.nextLine();
            Bitmap varImg=new Bitmap(nomImg);
           }
        catch(FileNotFoundException e){
            System.out.println("Erreur, le fichier n'existe pas!");
        }
        catch(IOException e){
            System.out.println("Ce n'est pas une image!");
         }
        }
     
    }
    puis mon 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
    import java.io.*;
    import java.util.Scanner;
    public class MonTest2Essai2{
        public static void main(String[] args) throws ChoixIncorrect,IOException, FileNotFoundException {
        String [] tabRubriques={"ouvrir une image", "fermer une image","creer une image","incruster une image","sauvegarder une image","afficher la liste des images","quitter le programme"};
        Menu menuUtilisateur=new Menu(tabRubriques);
        int choix=0;
        Bitmap[]mesImages=new Bitmap[3];
        for( int i=0;i<mesImages.length;i++){
           // mesImages[0]=new Bitmap("img1.jpg");
            //mesImages[1]=new Bitmap("coquelicot.jpg");
           // mesImages[2]=new Bitmap("princesse.jpg");
        }
     
        do{
            try{
               choix= menuUtilisateur.afficherChoisir(); //ça marche plus
               switch(choix){
                   case 1:mesImages[0].ouvrirImage();
                       break;
                  /** case 1: System.out.println("nom du fichier à ouvrir:"); ça marche
                   try{
                        mesImages[0]=new Bitmap(sc.nextLine());
                   }
                   catch(FileNotFoundException e){
                        System.out.println("Erreur, le fichier n'existe pas");
                   }
                   catch(IOException e){
                        System.out.println("pas une image");
                   }
                   break;**/
                   case 2:System.out.println("fermer");
                   break;
                   case 3:System.out.println("creer");
                   break;
                   case 4:System.out.println("incruster une image");
                   break;
                   case 5:System.out.println("sauvegarder");
                   break;
                   case 6:System.out.println("afficher collection img");
                   break;
               }//switch
            }//try
            catch (ChoixIncorrect e){
                System.out.println("Attention mauvaise saisi, recommencez!");
            }
        }
        while(choix!=7);
     
    }//main
    }//monTest2
    dans le main

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Bitmap[]mesImages=new Bitmap[3];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    case 1:mesImages[0].ouvrirImage();
    j'ai bien déclaré mon objet tableau mesImages de type Bitmap et dans ma méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        void ouvrirImage() throws IOException, FileNotFoundException{
        try{
        System.out.println("nom de l'image à ouvrir:");
            String nomImg=sc.nextLine();
            Bitmap varImg=new Bitmap(nomImg);
           }
    je lui demande bien de créer un objet varImg de type Bitmap avec le nom en paramètre!

    aurais-je oublié un truc?

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 96
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    Je pense que le problème vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Bitmap[]mesImages=new Bitmap[3];
    1. Un "new MonObjet" doit être suivi de "()" avec éventuellement des paramètres pour le constructeur.
    2. Il faut d'abord que tu crées tes objets pour pouvoir le ajouter dans ton tableau.


    Corrige déjà ça après on verra la suite (s'il y en a une )

  3. #3
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Il s'agit d'un tableau, il n'y a donc pas d'appel à un constructeur.
    En revanche toutes les références de ton tableau sont null.

    Peux-tu préciser exactement où est l'erreur car dans ton code c'est marqué choix= menuUtilisateur.afficherChoisir(); //ça marche plus ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 36
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    c'est précisément cette ligne qui me renvoie un null,c'est pour ça que je pense que c'est ma méthode qui n'est pas bonne.
    Merçi pour vos idées

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 17
    Points : 31
    Points
    31
    Par défaut
    Hé bien, comme Nemek te l'a déjà dit, les références de ton tableau sont nulles:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bitmap[]mesImages=new Bitmap[3];     
    for( int i=0;i<mesImages.length;i++){
    // mesImages[0]=new Bitmap("img1.jpg"); //mesImages[1]=new Bitmap("coquelicot.jpg"); // mesImages[2]=new Bitmap("princesse.jpg");
    }
    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mesImages[0].ouvrirImage();
    produit un NullPointerException.

Discussions similaires

  1. Bonne pratique méthode qui renvoie une liste/tuple
    Par manticore dans le forum Général Python
    Réponses: 5
    Dernier message: 13/12/2011, 14h42
  2. méthode qui renvoie 2 valeurs ou plus
    Par sandesc dans le forum Général Java
    Réponses: 3
    Dernier message: 26/04/2011, 13h38
  3. Méthode générique qui renvoie une Map
    Par stof dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 01/03/2010, 14h37
  4. Réponses: 2
    Dernier message: 27/04/2009, 22h23
  5. Réponses: 12
    Dernier message: 23/03/2006, 14h13

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