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 :

ecrire une methode aves des classes imbriquées


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 ecrire une methode aves des classes imbriquées
    Bonjour,
    Je bloque sur ma méthode qui me donne une erreur à la compilation,j'ai crée une class avec un tableau d'images, je cherche à récupérer le nom de mes images qui se trouve dans une autre class puis en faire une liste:
    l'erreur est à ligne:
    Collection.java:50: ')' expected
    this.mesImagesLues[j]=new Bitmap(String n);

    je suis pas sûr d'avoir bien fait pour récupérer le nom de l'image
    Merci de votre aide.

    ma collection d'images :
    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
    import java.io.*;
    import java.util.Scanner;
    public class Collection {	
    	Scanner sc = new Scanner(System.in);
     
    	Bitmap []mesImagesLues;
    	int nbImagesLues=0;
     
    	Bitmap []mesImagesCrees;
    	int nbImagesCrees=0;
     
    	Collection(){	//constructeur
    		Bitmap []mesImagesLues=new Bitmap[0];
    		this.nbImagesLues=0;
    		Bitmap []mesImagesCrees=new Bitmap[0];
    		this.nbImagesCrees=0;
    	}
     
    	void ajouterImageLues(Bitmap A){ 
    		Bitmap []ImgLuesNv=new Bitmap[mesImagesLues.length + 1];
    		for (int i=0; i<mesImagesLues.length; i++)
    			ImgLuesNv[i]=mesImagesLues[i];
    		ImgLuesNv[mesImagesLues.length]=A;
    		mesImagesLues=ImgLuesNv;
     
    	}
    	void ajouterImageCrees(Bitmap X){ 
    		Bitmap []ImgCreesNv=new Bitmap[mesImagesCrees.length + 1];
    		for (int i=0; i<mesImagesCrees.length; i++)
    			ImgCreesNv[i]=mesImagesCrees[i];
    		ImgCreesNv[mesImagesCrees.length]=X;
    		mesImagesCrees=ImgCreesNv;
    	}
     
    	void supprimerImageLues(){		
    		System.out.println("Quelle image voulez-vous supprimer ?");
    		int Ind=sc.nextInt();
    		int IndSup=Ind-1;
    		Bitmap []ImgLuesNv=new Bitmap[mesImagesLues.length - 1];
    		for( int i=0;i<IndSup;i++)
    			ImgLuesNv[i]=mesImagesLues[i];
    		for( int i=0;i<ImgLuesNv.length-IndSup;i++)
    			ImgLuesNv[i+IndSup]=mesImagesLues[i+(IndSup+1)];
    		mesImagesLues=ImgLuesNv;
    	}
     
    	Collection saisirCollection(){ 
    		for(int j=0;j<this.mesImagesLues.length;j++){	
    			this.mesImagesLues[j]=new Bitmap(String n); //erreur à la compil pourtant je respecte le constructeur Bitmap
    			this.mesImagesLues[j].ie=new ImageExterneLue(n);
    		}
    		return this;
    	}
     
    	void afficherCollection(){
    		System.out.println("liste d'images");
    		for(int i=0;i<mesImagesLues.length;i++){
    			System.out.println( (i+1)+ "- ");
    			mesImagesLues[i].saisiCollection();
    		}
    	}
    }
    ma class Images:

    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
    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 { // constructeur pour les images lues
            this.ie=new ImageExterneLue(n);
            this.nom=n;
            this.data=((ImageExterneLue)ie).getTableau();
        }
        Bitmap(int largeur, int hauteur){		// constructeur pour les images créés
            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]=250;
                                this.data[x][y][1]=250;
                                this.data[x][y][2]=250;
                        }
            }
            this.nom=null;
            this.ie=new ImageExterneCree(this.data);
        }
        Bitmap(int largeur, int hauteur,int R,int V, int B){
            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]=R;
                                this.data[x][y][1]=V;
                                this.data[x][y][2]=B;
                        }
            }
            this.nom=null;
            this.ie=new ImageExterneCree(this.data);
        }
       Bitmap creerImage(Bitmap ImgLue){		//Bitmap creerImage(Bitmap ImgLue){
        	    this.data=ImgLue.data;
        	    this.nom=null;
        	    this.ie=new ImageExterneCree(this.data);
        	    return this;
       }

    et la dernière utilisée dans la class Bitmap:

    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
    import javax.imageio.*; 
    import java.awt.image.*;
    import java.io.*;
    public class ImageExterneLue extends ImageExterne{
        public ImageExterneLue(String nomf) throws IOException, 
    					      FileNotFoundException{
    	img = ImageIO.read(new File(nomf));
    	this.showImage();
        }
        public int[][][] getTableau(){
    	int wid, hei;
    	wid = img.getWidth();
    	hei = img.getHeight();
    	int[][][] res = new int[wid][hei][3];
    	int[] rgb = img.getRGB(0,0,wid,hei,null,0,wid);
    	for (int i=0; i<rgb.length; i++){
    	    res[i%wid][i/wid][0]=rgb[i]>>16 & 0xFF;
    	    res[i%wid][i/wid][1]=rgb[i]>>8 & 0xFF;
    	    res[i%wid][i/wid][2]=rgb[i] & 0xFF;
    	}
    	return res;
        }

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Regarde sur la ligne suivante, comment le constructeur est appelé.

    Sur la ligne suivante, il y a juste n, pas String n, et il n'y a pas d'erreur. Pourquoi "String" n, au juste ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    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
    le constructeur pour les images lues est comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Bitmap(String n) throws IOException, FileNotFoundException { // constructeur pour les images lues
            this.ie=new ImageExterneLue(n);
            this.nom=n;
            this.data=((ImageExterneLue)ie).getTableau();
    c'est pour ça que j'ai mis un (String n) dans ma methode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Collection saisirCollection(){ 
    		for(int j=0;j<this.mesImagesLues.length;j++){	
    			this.mesImagesLues[j]=new Bitmap(String n); //erreur à la compil pourtant je respecte le constructeur Bitmap
    			this.mesImagesLues[j].ie=new ImageExterneLue(n);
    		}
    		return this;
    	}

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Oui, tout comme le constructeur de ImageExterneLue

    Pourtant, lui, quand tu l'appelles, tu ne fais pas String n, tu fais juste n. Alors pourquoi tu fais pas pareil avec Bitmap ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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
    J'ai déjà essayé il me dit qu'il ne reconnait pas la variable n

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Bon, eh ben ce n'est pas la même erreur, ça avance .

    Il se plaint que la variable n n'existe pas. Puisque ça n'existe pas, tu ne peux pas le passer en paramètre d'un constructeur ou d'autre chose : on ne peut faire des choses qu'avec ce qui existe.

    Ces constructeurs veulent une String en paramètre, fais en sorte d'avoir une String à leur donner, et donne-leur.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre expérimenté Avatar de Nico02
    Homme Profil pro
    Developpeur Java/JEE
    Inscrit en
    Février 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Developpeur Java/JEE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 728
    Points : 1 622
    Points
    1 622
    Par défaut
    Salut,
    J'avoue ne pas très bien comprendre la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     this.mesImagesLues[j]=new Bitmap(String n);
    String n ça veut rien dire c'est pas une chaîne de caractères, deplus à la ligne suivante tu écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.mesImagesLues[j].ie=new ImageExterneLue(n);
    mais la variable n n'existe pas, elle n'est ni dans ta méthode, ni en attribut de ta classe

  8. #8
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.mesImagesLues[j]=new Bitmap(String n);
    mesImagesLuesest mon tableau de type Bitmap.Or dans la class Bitmap le constructeur prend en parametre un String qui represente le nom du fichier :
    image.jpg par exemple. J'ai donc instancié chaque case de mon tableau en type Bitmap en donnant un String en parametre comme le constructeur( je ne suis pas sûr que c'est bon)
    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.mesImagesLues[j].ie=new ImageExterneLue(n);
    ImageExterneLue c'est une class qui permet d'ouvrir des images .jpg sur le disque.
    Etant donné qu'il ya une réference ie de type ImageExterneLue dans la classBitmap , je l'instancie aussi.

    J'avoue que ce n'est pas facile!
    Merci

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Comme on l'a dit ce 'String' a rien à faire là, "String n" ca veux dire "déclarer une variable n de type String", on ne peux pas faire une déclaration à cet endroit du code. Remplace par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    			String n = "blabla";
    			this.mesImagesLues[j]=new Bitmap(n);
    			this.mesImagesLues[j].ie=new ImageExterneLue(n);
    Bon bien sur, a toi de mettre ce qui est correct dans n

Discussions similaires

  1. [C#]Remonter des événements dans des classes imbriquées
    Par Kcirtap dans le forum Windows Forms
    Réponses: 9
    Dernier message: 14/12/2013, 12h43
  2. Réponses: 2
    Dernier message: 15/03/2007, 14h00
  3. Réponses: 3
    Dernier message: 09/08/2006, 11h58
  4. [Reflection] Retrouver une methode avec des parametres primitifs
    Par rozwel dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 06/02/2006, 15h39
  5. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30

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