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

Langage Java Discussion :

Probleme avec classes internes


Sujet :

Langage Java

  1. #1
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut Probleme avec classes internes
    Bonjour tout le monde..
    J'ai un exercice tres simple a realiser: creer deux classes differentes, compiler et tester le programme.. Jusque la tout fonctionne. Ensuite je dois faire d'une de ces deux classe une classe interne de l'autre, et obtenir le meme resultat. C'est ce que j'ai fait moyennent quelques petites modification. et la j'ai essaye je un tas de solutions, et rien ne marchait..
    Voici la premiere classes:
    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
     
    public class BasicArray {
    static int thisArray[]={1,2,3,4};
     
    	public static void main(String[] args) {
    	int j;
    	int i;
    		for (i=0;i<4;i++)
    		{
    			Factorial a=new Factorial(thisArray[i]);
    			j=a.ComputeFactorial(thisArray[i]);
    			System.out.println(j);
    		}
    	}
     
    }
    et la deuxieme:
    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
     
    public class Factorial {
    	private int a;
    			public Factorial(int a){
    				this.a=a; 
    			}
     
    			public int ComputeFactorial(int a){
    			int result=1;
    			int i;
    			for(i=1;i<=a;i++)
    			{
    				result=result*i;
    			}
    				return result;
     
    		}
    	}
    avec deux classe separer mon programme fonctionne..
    Mais lorsque je l'assemble afin d'utiliser les classes internes.. ca bloque .. derniere solution en date:
    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
     
    public class BasicArray {
    static int thisArray[]={1,2,3,4};
     
    public class Factorial {
    	private int a;
    			public Factorial(int a){
    				this.a=a; 
    			}
     
    			public int ComputeFactorial(int a){
    			int result=1;
    			int i;
    			for(i=1;i<=a;i++)
    			{
    				result=result*i;
    			}
    				return result;
     
    		}
    	}
     
     
    public static void main(String[] args) {
    	int j;
    	int i;
    		for (i=0;i<4;i++)
    		{
    			BasicArray.Factorial a=new BasicArray.Factorial(thisArray[i]);
    			j=a.ComputeFactorial(thisArray[i]);
    			System.out.println(j);
    		}
    	}
     
    }
    qui ne marche forcement pas car je n'ai pas de constructeur pour la classe BasicArray.. j'ai essaye plusieurs autre trucs, mais je ne sais pas comment faire, si quelqu'un pouvait m'aider, ce serait sympa.. en plus je suis sur que ca doit etre tout bete, mais je ne vois pas..
    Desole pour l'orthographe, mais il n'y a pas d'accent sur les claviers anglais..sniff...

  2. #2
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Tu as un constructeur pour BasicArray, même si tu l'as omis.
    C'est juste le contructeur par default de la classe mère.
    S'il n'y a pas de solutions, il n'y a pas de problème.

  3. #3
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    tu veux dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    BasicArray a=new BasicArray();
    ok, mais apres je n'arriva pas acceder aux methode de la classe factorial..:s
    Desole pour l'orthographe, mais il n'y a pas d'accent sur les claviers anglais..sniff...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Août 2004
    Messages : 45
    Points : 14
    Points
    14
    Par défaut Solution...
    Tu dois déclarer ta classe Factorial comme static

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static class Factorial {
    car tu appel Factorial à partir de la fonction main qui est static...

    faire une inner class pour l'appeler a partir de la fonction static
    main... c'est pas terrible

  5. #5
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Et tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Factorial a=new Factorial(thisArray[i]);
    ?
    S'il n'y a pas de solutions, il n'y a pas de problème.

  6. #6
    Membre régulier Avatar de pseudobidon57
    Inscrit en
    Octobre 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 133
    Points : 101
    Points
    101
    Par défaut
    oui, merci, il fallait mettre la classe Factorial static.. j'ai beaucoup de mal a comprendre le principe des classe static..

    JMLLB, tu travailles a moscou?? je reve de venir travailler a saint petersbourg d'ici quelques temps.. tu y es developpeur? tu travailles pour une entreprise francaise??
    Desole pour l'orthographe, mais il n'y a pas d'accent sur les claviers anglais..sniff...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme avec classe erreur C1004
    Par JejeJames dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2010, 12h45
  2. probleme avec classe vector
    Par kamilia_85 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 06/02/2009, 19h00
  3. Problèmes avec classes et pointeurs
    Par Anas1984 dans le forum C++
    Réponses: 2
    Dernier message: 02/11/2006, 12h49
  4. Help ! probleme avec classe derivee
    Par marcozar dans le forum C++
    Réponses: 2
    Dernier message: 06/09/2006, 15h56
  5. Heritage de classe avec classes internes
    Par Regis.C dans le forum Langage
    Réponses: 11
    Dernier message: 27/04/2005, 12h19

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