[java] devinette (pour s'amuser)

devinette (pour s'amuser) [java] - Programmation

Marsh Posté le 21-05-2001 à 12:42:12    

Il faut deviner, sans l'exécuter, le mot de passe affiché par ce programme.
 
class Str
{ Str(char x)
  { System.out.print(x); }
};
 
class Base  
{ static Str s=new Str('P');  
  int a_=methode();
  final int b_;
  static
  { b_=surcharge();
  }
  Base()
  { System.out.print  ('E');  
  }
  int methode()
  { System.out.print  ('L');  
    return 0;
  }
  int surcharge()
  { System.out.print  ('S');
    return 1;
  }
  static
  { System.out.print  ('A');  
  }
  static Str t;  
  static  
  { t=new Str('R');
  }
}
 
class Derive extends Base
{ int c_=surcharge();
  Derive()
  { super();
    System.out.print  ('E');  
  }
  int surcharge()
  { System.out.print  ('L');  
    return 2;
  }
  static
  { System.out.print  ('A');  
  }
}
 
public class Start
{ public static void main(String[] argv)
  { new Derive();
    System.out.flush();
  }
}

Reply

Marsh Posté le 21-05-2001 à 12:42:12   

Reply

Marsh Posté le 21-05-2001 à 12:54:39    

Simplement : EP ?

Reply

Marsh Posté le 21-05-2001 à 12:57:43    

et non.

Reply

Marsh Posté le 21-05-2001 à 13:02:32    

Chez moi javac n'aime pas:

Code :
  1. static
  2.   { b_=surcharge();
  3.   }


Ni b_, ni sucharge ne sont statiques.

Reply

Marsh Posté le 21-05-2001 à 13:16:59    

"deviner, sans l'exécuter...."
 
donc c'est normal que javac n'en veux pas il faut juste le lire et deviner la sortie...
 
!il faut précompiler dans la tête!

Reply

Marsh Posté le 21-05-2001 à 13:19:01    

Ben oui mais si le compilo n'en veut pas, c'est que c'est pas du Java :D

Reply

Marsh Posté le 21-05-2001 à 13:51:13    

L L E ?

Reply

Marsh Posté le 21-05-2001 à 13:58:12    

et non c'est pas ça non plus
allez je vous aide mais moi non plus j'avais pas trouvé
 
1.        L’ordre de déclaration de la méthode static {} vis à vis des attributs statiques est important.
 
2.        Si un constructeur appel une méthode qui est surchargé, c'est la version surchargée qui est exécuté (contrairement au C++). Attention, l'instance dérivée n'est pas encore construite ! La méthode surchargée ne peut utiliser que les attributs hérités. Il ne faudrait pas appeler de méthode non final dans un constructeur.  
 
3.        L'initialisation des attributs s'effectue juste après l'appel du super() et avant le corps du constructeur.  
 
4.        L'ordre de déclaration des attributs est important.

Reply

Marsh Posté le 21-05-2001 à 14:08:46    

Modifie au moins ton code pour que ce soit du Java.

Reply

Marsh Posté le 21-05-2001 à 14:28:51    

ouais et tant que t'y es, essaie de le mettre en page un peu mieu, parce que là c illisible ton truc.
et c quoi le but de ton jeu? on t'as posé une colle, et tu veux nous faire repondre parce que tu trouves pas ?

Reply

Marsh Posté le 21-05-2001 à 14:28:51   

Reply

Marsh Posté le 21-05-2001 à 14:30:56    

G trouvé!!!!
(mais G triché)
 
Très intéressant comme exemple

Reply

Marsh Posté le 21-05-2001 à 14:57:21    

Le code correct est:

Code :
  1. class Str {
  2. Str(char x) {
  3.   System.out.print(x); }
  4. }
  5. class Base {
  6. static Str s=new Str('P');
  7. int a_=methode();
  8. final int b_;
  9. Base() {
  10.   b_ = surcharge();
  11.   System.out.print ('E');
  12. }
  13. int methode() {
  14.   System.out.print ('L');
  15.   return 0;
  16. }
  17. int surcharge() {
  18.   System.out.print ('S');
  19.   return 1;
  20. }
  21. static {
  22.   System.out.print ('A');
  23. }
  24. static Str t;
  25. static {
  26.   t=new Str('R');
  27. }
  28. }
  29. class Derive extends Base {
  30. int c_=surcharge();
  31. Derive() {
  32.   super();
  33.   System.out.print ('E');
  34. }
  35. int surcharge() {
  36.   System.out.print ('L');
  37.   return 2;
  38. }
  39. static {
  40.   System.out.print ('A');
  41. }
  42. }
  43. public class Start
  44. {
  45. public static void main(String[] argv) {
  46.   new Derive();
  47.   System.out.flush();
  48. }
  49. }
 

[edit]--Message édité par Verdoux--[/edit]

Reply

Marsh Posté le 21-05-2001 à 15:00:24    

un truce du genre PLEASE?

Reply

Marsh Posté le 21-05-2001 à 15:01:41    

Non, ça affiche "PARALLELE"

Reply

Marsh Posté le 21-05-2001 à 15:03:30    

PARLEE??
 
aaaaaaaaaaaaaarg ca m'enerve ton truc là !!  :cry:

Reply

Marsh Posté le 21-05-2001 à 15:04:29    

parallele? au bout de 30 essais j'aurais trouve  :D

Reply

Marsh Posté le 21-05-2001 à 15:06:12    

c'est exact parallele,
 
vous êtes lent !
 
non j'avais la réponse mais je trouvais l'astuce amusante.

Reply

Marsh Posté le 21-05-2001 à 15:12:32    

--------------
petoulouchi a écrit
 
ouais et tant que t'y es, essaie de le mettre en page un peu mieu, parce que là c illisible ton truc.
et c quoi le but de ton jeu? on t'as posé une colle, et tu veux nous faire repondre parce que tu trouves pas ?
 
------------------------
he ! quelle arogance ! j'aporte un peu de gaité à ce forum et toi tu le prend mal,
j'ai pas besoin de vous pour répondre à une colle.
je glande au chomdu et en pendant ce temps j'étudie java, je tombe sur des truc amusant et educatif et je vous en fait profiter, c'est tout.
y a rien qui t'oblige à lire mon poste ! c'est un forum ici c'est pas c'est wall-street

Reply

Marsh Posté le 21-05-2001 à 15:12:56    

heu pour le 'vous etes lents', ça veut dire que tu te consideres ultra rapide? non parce que nous aussi on peut te sortir des colles, et tu seras lent aussi.
C juste peut etre que c'etait pas super interessant ...

Reply

Marsh Posté le 21-05-2001 à 15:16:52    

pour petoulachi qui croit qu'on a besoin de lui pour faire ses devoir :
 
http://perso.club-internet.fr/ppra [...] ction.html
 
sur ce site y la réponse et le développement en détail du problème de hierachie des methode etc....
 
 
-moi çà fait des années que j'ai plus de devoir.......snif.

Reply

Marsh Posté le 21-05-2001 à 15:21:15    

N'empêche que le code donné était faux. Un bloc statique ne peut utiliser un membre ou une méthode non statiques.

Reply

Marsh Posté le 21-05-2001 à 15:28:54    

oui surtout que je pense pas avoir posé de post pour m'aider a faire mes devoir... enfin ...

Reply

Marsh Posté le 21-05-2001 à 16:15:43    

ok ok, y avait bien une faute mais personne ne devais compiler ce truc.....c'était un test mental... donc vous avez presque tous triché.
 
 
 
enfin c'est bien...vous avez trouvée.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed