Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1122 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Argument depuis constructeur dans limite tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Argument depuis constructeur dans limite tableau

n°912439
KristaaL
Posté le 01-12-2004 à 20:27:23  profilanswer
 

Bonsoir ,  
je débute en java et j'ai déja un probleme ou je vois vraiment pas ou est le probleme :p
j'ai :  

Code :
  1. class NbPremiers {
  2.   public NbPremiers(int max) {
  3.     int n = max ;
  4.       }
  5. (......)
  6. boolean [] t = new boolean[n] ; //!!! erreur ici !!!
  7. private int n ;


 
 
J'obtiens ( a la compilation ) :
illegal forwad reference
boolean [] t = new boolean [n] ;
                            ^
 
Merci pour votre aide  :)


Message édité par KristaaL le 01-12-2004 à 22:38:00
mood
Publicité
Posté le 01-12-2004 à 20:27:23  profilanswer
 

n°912443
the real m​oins moins
Posté le 01-12-2004 à 20:34:16  profilanswer
 

ben ton entier n n'est visible que dans le code de ton constructeur là...
 
... ha ben tu le déclare déjà au niveau classe, alors ton erreur c'est simplement que tu en redeclares un autre ds le cteur... donc dans ton cteur tu met "n=max" et hop
(ou this.n = max; pour plus de lisibilité)
 
(declare tes variables membres de classes en haut)


Message édité par the real moins moins le 01-12-2004 à 20:34:26

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°912481
KristaaL
Posté le 01-12-2004 à 21:09:53  profilanswer
 

Autant pour moi en fait le code dans le constructeur était simplement n = max ; ( pas de 2 eme déclaration ) c 'est juste au moment de recopier .. Le probleme vient en effet du fait que la déclaration était aprés .. Mais pourtant si mes souvenirs sont bons ( apprament mauvais ) c'est pas d'abord : 1 - Initialisation nulle , initialisation explicite , et initialisation depuis le constructeur ? : s

n°912495
the real m​oins moins
Posté le 01-12-2004 à 21:31:29  profilanswer
 

euh, balance un bout de code complet, là j'ai du mal à voir ce que tu veux et ou etait ton probleme
(parce que le fait que la declaration soit en bas de classe n'influence pas le comportement dans ce cas-ci, ct juste une remarque pour la lecture)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°912530
KristaaL
Posté le 01-12-2004 à 22:22:41  profilanswer
 

En fait si

Code :
  1. private int n ;

se trouve avant la déclaration

Code :
  1. boolean [] t = new boolean[n] ;


ca marche , sinon erreur de compilation , c'est la que j'ai du mal je croyais que l'ordre n'avait pas d influence . sinon mon code complet ( c'est mon premier code en java et mon niveau math est 2nde donc no critique :p )  

Code :
  1. class NbPremiers {
  2. private int n ;
  3. private int temp ;
  4. private int i ;
  5. private int j ;
  6. private int k ;
  7.   public NbPremiers(int recu) {
  8.       n = recu ;
  9.       }
  10. boolean [] t = new boolean[n] ;
  11. public void Calcul() {
  12.     for (i = 2; i < t.length; i++) {
  13.       t[i] = true;
  14.     }
  15.     toj : for (j = 2; j < t.length; j++) {
  16.       if (t[j] == false) {
  17.         continue toj;
  18.       }
  19.       else {
  20.         for (temp = j + j; temp < t.length; temp += j) {
  21.           t[temp] = false;
  22.         }
  23.       }
  24.     }
  25.   }
  26. public void Affiche () {
  27.       for (k=1 ; k < t.length ; k++) {
  28. if ( t[k] == true ) {
  29.         System.out.println(k);
  30.       }
  31. }
  32. }
  33. }
  34. }
  35. public class Cherche {
  36. public static void main (String[] args) {
  37.   System.out.println("Donnez un entier :" );
  38.      int recu = Clavier.lireInt();
  39. NbPremiers test = new NbPremiers(recu);
  40.     test.Calcul();
  41.     test.Affiche();
  42.     }
  43. }


 
par contre t.length vaut 0 si je lui met en parametre n ( new boolean[n] ) alors que si je fais un System.out.println(n) ;
il m'affiche bien la valeur recue en argument et le code marche si je met directement un int dans la déclaration ( ex : new boolean [9999] ; )


Message édité par KristaaL le 01-12-2004 à 22:26:35
n°912533
the real m​oins moins
Posté le 01-12-2004 à 22:24:32  profilanswer
 

noms de methodes -> une minuscule en premier caractere
 
ton int n était ou avant?
 
"Cherche" est dans le meme source que NbPremiers?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°912536
KristaaL
Posté le 01-12-2004 à 22:26:02  profilanswer
 

aprés la déclaration de la méthode Affiche ()
Cherche est dans le meme source que NbPremiers ( Cherche.java )

n°912544
the real m​oins moins
Posté le 01-12-2004 à 22:30:56  profilanswer
 

KristaaL a écrit :

aprés la déclaration de la méthode Affiche ()

euh, tu l'avais sans doute mis en dehors de la classe NbPremiers alors... !?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°912551
KristaaL
Posté le 01-12-2004 à 22:33:47  profilanswer
 

nan c'est ca le pire : '( je comprends rien

n°912553
the real m​oins moins
Posté le 01-12-2004 à 22:34:22  profilanswer
 

balance le code qui compile pas pour voir :p


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le 01-12-2004 à 22:34:22  profilanswer
 

n°912555
KristaaL
Posté le 01-12-2004 à 22:35:45  profilanswer
 

Code :
  1. class NbPremiers {
  2. private int temp ;
  3. private int i ;
  4. private int j ;
  5. private int k ;
  6.   public NbPremiers(int recu) {
  7.       n = recu ;
  8.       }
  9. boolean [] t = new boolean[n] ;
  10. public void calcul() {
  11.     for (i = 2; i < t.length; i++) {
  12.       t[i] = true;
  13.     }
  14.     toj : for (j = 2; j < t.length; j++) {
  15.       if (t[j] == false) {
  16.         continue toj;
  17.       }
  18.       else {
  19.         for (temp = j + j; temp < t.length; temp += j) {
  20.           t[temp] = false;
  21.         }
  22.       }
  23.     }
  24.   }
  25. public void affiche () {
  26.       for (k=1 ; k < t.length ; k++) {
  27. if ( t[k] == true ) {
  28.         System.out.println(k);
  29.       }
  30. }
  31. }
  32. private int n ;
  33. }
  34. public class Cherche {
  35. public static void main (String[] args) {
  36.   System.out.println("Donnez un entier :" );
  37.      int recu = Clavier.lireInt();
  38. NbPremiers test = new NbPremiers(recu);
  39.     test.calcul();
  40.     test.affiche();
  41.     }
  42. }

n°912566
Profil sup​primé
Posté le 01-12-2004 à 22:46:11  answer
 

Initialise ton tableau 't' dans ton constructeur après avoir initialisé 'n'.

n°912568
the real m​oins moins
Posté le 01-12-2004 à 22:48:04  profilanswer
 

ha ouais j'avais pas vu, ça [:slackerbitch]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°912572
KristaaL
Posté le 01-12-2004 à 22:50:01  profilanswer
 

J'ai déja essayé :'( mais la j'ai un autre probleme partout ou je veux utiliser t[] il me met impossible de résoudre le symbole t a la ligne ...

n°912573
KristaaL
Posté le 01-12-2004 à 22:50:44  profilanswer
 

comme si le constructeur gardait 't' rien que pour lui

n°912580
Profil sup​primé
Posté le 01-12-2004 à 22:56:03  answer
 

Il faut initialiser t dans ton constructeur, mais la déclaration doit rester dans la portée de ta classe :
 

Code :
  1. class NbPremiers {
  2.     boolean[] t;
  3.     /* ... */
  4.     NbPremiers(int recu) {
  5.         t = new boolean[recu];
  6.     }
  7. }


 
(note que ta variable 'n' ne sert à rien dans ton code et que je considère ici que 'recu' a une valeur correcte pour la taille d'un tableau)


Message édité par Profil supprimé le 01-12-2004 à 23:02:46
n°912668
KristaaL
Posté le 02-12-2004 à 07:19:36  profilanswer
 

Merci beaucoup . Je croyais qu une initialisation pouvait se faire dans le constructeur :p  
( en effet 'n' ne sert plus a rien (avant elle servait pour la methode affiche () )  encore merci et bonne journée !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Argument depuis constructeur dans limite tableau

 

Sujets relatifs
Probleme de tableau a 2 dimention[C++] Pointeur sur constructeur ou Pointeur sur Classe ?
Ecrire des entiers dans un tableau de charPlutot frames ou tableau?
passer un tableau d'une page à une autreprob de surcharge de constructeur
parcourir un tableauComment retourner un tableau (SVP)
[HTML] Problème tout bête à propos d'un tableau.appel procedure ac tableau
Plus de sujets relatifs à : Argument depuis constructeur dans limite tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR