je vois pas l'interet des interfaces dans un exo (en fin de topic)

je vois pas l'interet des interfaces dans un exo (en fin de topic) - Java - Programmation

Marsh Posté le 26-12-2002 à 19:01:39    

bon je commence le java.
J'ai eu des cours en fac mais on a pas eu de TPs de java, juste du c++.
Donc la j'ai mis le jdk 1.4 windows.
Je saisi pas trop comment ça marche.
Donc la je voudrais creer un executable qui m'affiche "coucou" et pi c'est tout.  :p  
 

Code :
  1. public class bidule {
  2.    
  3.     public static void main(String [ ] arg)
  4.     {
  5. system.out.println("coucou" );
  6.     }
  7. }


 
Mais ça veut pas compiler  :)  
comment on fait ?
Dans des tutos je vois qu'il fo faire javac nomclass mais ça marche pas et java nomclass me dit erreur dans le main.


Message édité par karim63 le 29-12-2002 à 18:06:45
Reply

Marsh Posté le 26-12-2002 à 19:01:39   

Reply

Marsh Posté le 26-12-2002 à 19:19:02    

mais merde  :fou: pkoi ça marche pas !

Reply

Marsh Posté le 26-12-2002 à 19:38:16    

tu doit mettre un 'S' majuscule a system!
 
System.out.println();

Reply

Marsh Posté le 26-12-2002 à 19:44:16    

jackmount a écrit :

tu doit mettre un 'S' majuscule a system!
 
System.out.println();


 
Mais je l'ai dja fait.  :jap:  

Code :
  1. class Bidule {
  2.    
  3.     public static void main (String arg [])
  4.     {
  5. System.out.println("coucou" );
  6.     }
  7. }


 

Citation :

F:\cygwin\home\Karim\java>java Bidule.java
Exception in thread "main" java.lang.NoClassDefFoundError: Bidule/java


Message édité par karim63 le 26-12-2002 à 19:44:52
Reply

Marsh Posté le 26-12-2002 à 19:46:11    

javac source.java
 
java byte_code[sans le .class]


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 19:54:09    

Taz@PPC a écrit :

javac source.java
 
java byte_code[sans le .class]


 
javac ne donne rien.
Il trouve pas javac quoi.
je comprend pas J'ai pourtant mis le jdk 1.4  :heink:  
j2re-1_4_1_01-windows-i586-i.exe

Reply

Marsh Posté le 26-12-2002 à 19:54:48    

re != sdk


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 19:56:34    


 
bon benh j'etait sur le site de sun et a chaque fois que m'orientait vers SDK ça me sortait ça.
Donc si qqun a un lien.
(je vais retenter biensur mais bon)

Reply

Marsh Posté le 26-12-2002 à 19:59:43    

ok c bon j'ai trouvé.
Euh il faut que je desintalle l'autre ou il faut les deux ?

Reply

Marsh Posté le 26-12-2002 à 20:00:08    

normalement le sdk comprends aussi le re. alors désintalles


---------------
du bon usage de rand [C] / [C++]
Reply

Marsh Posté le 26-12-2002 à 20:00:08   

Reply

Marsh Posté le 26-12-2002 à 20:24:22    

merci bien ça marche  :jap:

Reply

Marsh Posté le 27-12-2002 à 15:25:34    

on relevera tout de meme que ce charmant jeune homme à installé un jdk windows et tentait de l'utiliser sous cygwin  :sarcastic:


Message édité par --greg-- le 27-12-2002 à 15:25:47

---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 27-12-2002 à 16:25:42    

--greg-- a écrit :

on relevera tout de meme que ce charmant jeune homme à installé un jdk windows et tentait de l'utiliser sous cygwin  :sarcastic:


 
oh la mauvaise langue, c même pas vrai en plus  :p  
 

Citation :

F:\cygwin\home\Karim\java>java Bidule.java
Exception in thread "main" java.lang.NoClassDefFoundError: Bidule/java


 
C'est juste que mon rep home sous windows pour les programmes est le rep home de cygwin pour des raisons de comodités.
Cygwin permet pas de lancer des exe linux, mais seulement de compiler les sources et encore c'est pas vraiment directement portable.
Donc a mon avis c même pas la peine de penser à installer jdk a partir des sources.
Si j'utilise cygwin c'est pour avoir gcc et g++, sinon j'ai deja xemacs, freepascal, Prolog, Ocaml pour windows  :whistle:
Enfin j'ai tout aussi sous linux mais c'est merdique linux.  :p
 
J'ai que des merdes avec linux y a jamais rien qui fonctionne.  :jap:  
En plus y a même pas eMule  :D

Reply

Marsh Posté le 27-12-2002 à 16:35:51    

Code :
  1. class SuiteNum
  2. {
  3.     public static void main(String args [])
  4.     {
  5. Suite s=new Fibonacci(8);
  6. s.eval(5);
  7. System.out.println(s.toString());
  8.     }
  9. }
  10. abstract class Suite
  11. {
  12.     protected Number [] valeurs;
  13.     protected int connues;
  14.    
  15.     public void Suite(int n)
  16.     {
  17. connues=0;
  18. valeurs=new Number [n];
  19.     }
  20.     public String toString()
  21.     {
  22. String s="";
  23. for(int i=0;i<connues;i++)
  24.     {s=s+"S("+i+" )="+valeurs[i].toString()+"; ";}
  25. return s;
  26.     }
  27.    
  28.     protected void ajouter(Number x,int k)
  29.     {
  30. valeurs[k]=x;
  31.     }
  32.     abstract public Number eval(int n);
  33.  
  34. }
  35. class Fibonacci extends Suite
  36. {
  37.     Fibonacci(int n)
  38.     {
  39. Suite(n);
  40.     }
  41.     public Number eval(int n)
  42.     {
  43. if (n==0)
  44.     {
  45.  ajouter(new Long (0),0);
  46.     }
  47. else
  48.     if (n==1)
  49.  {
  50.      ajouter(new Long(1),1);
  51.  }
  52.     else
  53.  {
  54.      for(int i=2;i<=n;i++)
  55.   {
  56.       ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
  57.   }
  58.  }
  59. connues=n+1;
  60. return valeurs[n];
  61.     }
  62. }


 
javac passe mais avec java ça me donne :
 

Citation :

Exception in thread "main" java.lang.NullPointerException
        at Fibonacci.eval(SuiteNum.java:60)
        at SuiteNum.main(SuiteNum.java:6)


 
Je vois pas d'ou ça vient.
 
Et je voudrais utiliser Super(n) a la place de ce qui est en gras mais ça passe pas.

Reply

Marsh Posté le 27-12-2002 à 16:48:51    

karim63 a écrit :

Et je voudrais utiliser Super(n) a la place de ce qui est en gras mais ça passe pas.
 


 
1/ Les noms de méthodes commencent par une minuscule
2/ tu dois faier super.suite(n);
 
A+

Reply

Marsh Posté le 27-12-2002 à 16:49:42    

c'est une blague ou tu as 3 classes dans le meme fichier java?

Reply

Marsh Posté le 27-12-2002 à 16:52:33    

DarkLord a écrit :


 
1/ Les noms de méthodes commencent par une minuscule
2/ tu dois faier super.suite(n);
 
A+


 
1/ ok
2/  :??: benh moi je veux en fait utliser le constructeur de la classe superieure. Dans mon suport de cours il est indiqué que je peux faire super( ) qui appelle le constructeur de la classe mere directement superieure.

Reply

Marsh Posté le 27-12-2002 à 16:53:31    

DarkLord a écrit :

c'est une blague ou tu as 3 classes dans le meme fichier java?


 
Non c'est pas une blague j'ai fait ça pour simplifier pour l'instant, j'ai pas encore tenté les packages import etc.

Reply

Marsh Posté le 27-12-2002 à 16:56:22    

karim63 a écrit :


 
1/ ok
2/  :??: benh moi je veux en fait utliser le constructeur de la classe superieure. Dans mon suport de cours il est indiqué que je peux faire super( ) qui appelle le constructeur de la classe mere directement superieure.


 
j'avais pas vu que ct le constructeur
 
super(n);

Reply

Marsh Posté le 27-12-2002 à 16:56:54    

karim63 a écrit :


 
1/ ok
2/  :??: benh moi je veux en fait utliser le constructeur de la classe superieure. Dans mon suport de cours il est indiqué que je peux faire super( ) qui appelle le constructeur de la classe mere directement superieure.


 
edit j'avais pas vu que ct le constructeur. Dans ce cas bien sur tu dois respecter le nom de la classe. Donc j'ai rien dit, c'est "correct"
 
Sinon pq tu fais suite dans ton code alors ... :heink:


Message édité par darklord le 27-12-2002 à 17:00:55
Reply

Marsh Posté le 27-12-2002 à 17:01:18    

karim63 a écrit :


 
Non c'est pas une blague j'ai fait ça pour simplifier pour l'instant, j'ai pas encore tenté les packages import etc.


 
rien à voir. Si c'est pas une classe d'une classe (une inner class) ca va dans un fichier séparé. Une classe = un fichier .java du nom de le classe. Rien à voir avec import package et

Reply

Marsh Posté le 27-12-2002 à 17:06:13    

?
et alors ça marche.
Je verrais ça apres.
Il me fait chier avec les pointeurs.

Reply

Marsh Posté le 27-12-2002 à 17:06:35    

karim63 a écrit :

?
et alors ça marche.


 
 :sarcastic:

Reply

Marsh Posté le 27-12-2002 à 17:07:17    

karim63 a écrit :

?
Il me fait chier avec les pointeurs.


 
on dit: "j'ai programmé comme un cochon et j'ai pas intialisé les variables que j'accède" qd on est honnête ... :D

Reply

Marsh Posté le 27-12-2002 à 17:12:47    

DarkLord a écrit :


 
on dit: "j'ai programmé comme un cochon et j'ai pas intialisé les variables que j'accède" qd on est honnête ... :D


 
ouep mais la c'est un tableau et c'est plus galere  :D  
Update de mon programme de merde :
 
 

Code :
  1. class SuiteNum
  2. {
  3.     public static void main(String args [])
  4.     {
  5. Suite s=new Fibonacci(8);
  6. s.eval(5);
  7. System.out.println(s.toString());
  8.     }
  9. }
  10. abstract class Suite
  11. {
  12.     protected Number [] valeurs;
  13.     protected int connues;
  14.    
  15.     public void Suite(int n)
  16.     {
  17. connues=0;
  18. valeurs=new Number [n];
  19.     }
  20.     public String toString()
  21.     {
  22. String s="";
  23. for(int i=0;i<connues;i++)
  24.     {s=s+"S("+i+" )="+valeurs[i].toString()+"; ";}
  25. return s;
  26.     }
  27.    
  28.     protected void ajouter(Number x,int k)
  29.     {
  30. valeurs[k]=x;
  31.     }
  32.     abstract public Number eval(int n);
  33.  
  34. }
  35. class Fibonacci extends Suite
  36. {
  37.     Fibonacci(int n)
  38.     {
  39. Suite(n);
  40.     }
  41.     public Number eval(int n)
  42.     {
  43. if (connues<1)
  44.     {
  45.  ajouter(new Long (0),0);
  46.     }
  47. if (connues<2)
  48.     {
  49.  ajouter(new Long(1),1);
  50.     }
  51. if ( (2<=connues) && (connues<n) )
  52. for(int i=connues+1;i<=n;i++)
  53.     {
  54.  ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
  55.     }
  56.    
  57. if (connues<n+1)
  58.     {
  59.  connues=n+1;
  60.     }
  61. return valeurs[n];
  62.     }
  63. }

Reply

Marsh Posté le 27-12-2002 à 17:14:44    

pq tu fais pas un tableau de long bêtement?

Reply

Marsh Posté le 27-12-2002 à 17:15:05    

a tout les coup c'est foireux ca
 
if ( (2<=connues) && (connues<n) )
         for(int i=connues+1;i<=n;i++)
           {
          ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
           }

Reply

Marsh Posté le 27-12-2002 à 17:15:23    

DarkLord a écrit :


 
edit j'avais pas vu que ct le constructeur. Dans ce cas bien sur tu dois respecter le nom de la classe. Donc j'ai rien dit, c'est "correct"
 
Sinon pq tu fais suite dans ton code alors ... :heink:


 
Benh parceque super(n); ne marche pas  :heink:
Doù ma question.
Enfin il me semble que ça revient au même de mettre super ou bien le nom du constructeur de la class dont on herite.  :heink:

Reply

Marsh Posté le 27-12-2002 à 17:18:14    

DarkLord a écrit :

pq tu fais pas un tableau de long bêtement?


 
Et bien car dans l'énoncé il veut qu'on utilise Number.
La j'ai un peut pompé la ou je bloquait sur la correction de la prof, mais moi j'avais commencé par faire un truc genre Number+Number, mais ça marche pas.
Donc effectivement au final c'est ridicule. Mais si on peut additioner deux number je veut bient savoir.

Reply

Marsh Posté le 27-12-2002 à 17:19:06    

DarkLord a écrit :

a tout les coup c'est foireux ca
 
if ( (2<=connues) && (connues<n) )
         for(int i=connues+1;i<=n;i++)
           {
          ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
           }
 


 
 :lol: bien vu.
Si y a u truc douteux c'est bien là, mais j'ai lu et relu et je vois pas de trou.  :heink:

Reply

Marsh Posté le 27-12-2002 à 17:28:24    

karim63 a écrit :


 
Benh parceque super(n); ne marche pas  :heink:
Doù ma question.
Enfin il me semble que ça revient au même de mettre super ou bien le nom du constructeur de la class dont on herite.  :heink:  


 
non ca revient pas au meme et ta classe mère est abstraite. Donc c'est logique que ca fonctionne pas ...

Reply

Marsh Posté le 27-12-2002 à 17:28:43    

woula c pourrit ce que j'ai fait :whistle:

Reply

Marsh Posté le 27-12-2002 à 17:29:17    

DarkLord a écrit :


 
non ca revient pas au meme et ta classe mère est abstraite. Donc c'est logique que ca fonctionne pas ...


 
ah ok merci.

Reply

Marsh Posté le 27-12-2002 à 17:32:02    

karim63 a écrit :

woula c pourrit ce que j'ai fait :whistle:  


 
commence déjà par mettre une classe par fichier ...

Reply

Marsh Posté le 27-12-2002 à 17:37:27    

Bon voilà ça ressemble plus a qqchose deja.
Je vais mettre une classe par fichier, mais j'aurai besoin d'un ptit coup de pouce pour le faire.
 

Code :
  1. class SuiteNum
  2. {
  3.     public static void main(String args [])
  4.     {
  5. Suite s=new Fibonacci(8);
  6. s.eval(5);
  7. System.out.println(s.toString());
  8.     }
  9. }
  10. abstract class Suite
  11. {
  12.     protected Number [] valeurs;
  13.     protected int connues;
  14.    
  15.     public void Suite(int n)
  16.     {
  17. connues=-1;
  18. valeurs=new Number [n];
  19.     }
  20.     public String toString()
  21.     {
  22. String s="";
  23. for(int i=0;i<=connues;i++)
  24.     {s=s+"S("+i+" )="+valeurs[i].toString()+"; ";}
  25. return s;
  26.     }
  27.    
  28.     protected void ajouter(Number x,int k)
  29.     {
  30. valeurs[k]=x;
  31.     }
  32.     abstract public Number eval(int n);
  33.  
  34. }
  35. class Fibonacci extends Suite
  36. {
  37.     Fibonacci(int n)
  38.     {
  39. Suite(n);
  40.     }
  41.     public Number eval(int n)
  42.     {
  43. if (connues<0)
  44.     {
  45.  ajouter(new Long (0),0);
  46.     }
  47. if ((connues<1) && (n>=1))
  48.     {
  49.  ajouter(new Long(1),1);
  50.     }
  51. if ( (connues<n) && (n>=2) )
  52.     {
  53.  for(int i=connues+1;i<=n;i++)
  54.      {
  55.   ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
  56.      }
  57.     }
  58. if (connues<n)
  59.     {
  60.  connues=n;
  61.     }
  62. return valeurs[n];
  63.     }
  64. }

Reply

Marsh Posté le 27-12-2002 à 17:47:40    

karim63 a écrit :

Bon voilà ça ressemble plus a qqchose deja.
Je vais mettre une classe par fichier, mais j'aurai besoin d'un ptit coup de pouce pour le faire.
 

Code :
  1. class SuiteNum
  2. {
  3.     public static void main(String args [])
  4.     {
  5. Suite s=new Fibonacci(8);
  6. s.eval(5);
  7. System.out.println(s.toString());
  8.     }
  9. }
  10. abstract class Suite
  11. {
  12.     protected Number [] valeurs;
  13.     protected int connues;
  14.    
  15.     public void Suite(int n)
  16.     {
  17. connues=-1;
  18. valeurs=new Number [n];
  19.     }
  20.     public String toString()
  21.     {
  22. String s="";
  23. for(int i=0;i<=connues;i++)
  24.     {s=s+"S("+i+" )="+valeurs[i].toString()+"; ";}
  25. return s;
  26.     }
  27.    
  28.     protected void ajouter(Number x,int k)
  29.     {
  30. valeurs[k]=x;
  31.     }
  32.     abstract public Number eval(int n);
  33.  
  34. }
  35. class Fibonacci extends Suite
  36. {
  37.     Fibonacci(int n)
  38.     {
  39. Suite(n);
  40.     }
  41.     public Number eval(int n)
  42.     {
  43. if (connues<0)
  44.     {
  45.  ajouter(new Long (0),0);
  46.     }
  47. if ((connues<1) && (n>=1))
  48.     {
  49.  ajouter(new Long(1),1);
  50.     }
  51. if ( (connues<n) && (n>=2) )
  52.     {
  53.  for(int i=connues+1;i<=n;i++)
  54.      {
  55.   ajouter(new Long(valeurs[n-1].longValue()+valeurs[n-2].longValue()),n);
  56.      }
  57.     }
  58. if (connues<n)
  59.     {
  60.  connues=n;
  61.     }
  62. return valeurs[n];
  63.     }
  64. }




 
un coup de pouce pour quoi ?

Reply

Marsh Posté le 27-12-2002 à 18:23:45    

HappyHarry a écrit :


 
un coup de pouce pour quoi ?


 
pour mettre les classes dans des fichiers  :whistle:  
 
On doit vraiment faire une classe par fichier  :??:  
 
Sinon j'ai corrigé mon prog.
J'avais fait une erreur bete, dans le for de la fin du prg j'ai utilisé n au lieu de i donc ça marchait po  :lol:  
 

Code :
  1. class SuiteNum
  2. {
  3.     public static void main(String args [])
  4.     {
  5. Suite s=new Fibonacci(150);
  6. s.eval(40);
  7. System.out.println(s.toString());
  8.     }
  9. }
  10. abstract class Suite
  11. {
  12.     protected Number [] valeurs;
  13.     public int connues;
  14.    
  15.     public void Suite(int n)
  16.     {
  17. connues=-1;
  18. valeurs=new Number [n];
  19.     }
  20.     public String toString()
  21.     {
  22. String s="";
  23. for(int i=0;i<=connues;i++)
  24.     {s=s+"S("+i+" )="+valeurs[i].toString()+"; ";}
  25. return s;
  26.     }
  27.    
  28.     protected void ajouter(Number x,int k)
  29.     {
  30. valeurs[k]=x;
  31.     }
  32.     abstract public Number eval(int n);
  33.  
  34. }
  35. class Fibonacci extends Suite
  36. {
  37.     Fibonacci(int n)
  38.     {
  39. Suite(n);
  40.     }
  41.     public Number eval(int n)
  42.     {
  43. if (connues<0)
  44.     {
  45.  ajouter(new Long (0),0);
  46.     }
  47. if ((connues<1) && (n>=1))
  48.     {
  49.  ajouter(new Long(1),1);
  50.     }
  51. if ( (connues<n) && (n>=2) )
  52.     {
  53.  if (connues<=1)
  54.      {
  55.   connues=1;
  56.      }
  57.  for(int i=connues+1;i<=n;i++)
  58.      {
  59.   ajouter(new Long(valeurs[i-1].longValue()+valeurs[i-2].longValue()),i);
  60.      }
  61.     }
  62. if (connues<n)
  63.     {
  64.  connues=n;
  65.     }
  66. return valeurs[n];
  67.     }
  68. }

Reply

Marsh Posté le 27-12-2002 à 18:41:06    

Tu veux de l'aide pour mettre une classe dans un fichier? :heink:

Reply

Marsh Posté le 27-12-2002 à 18:42:15    

DarkLord a écrit :

Tu veux de l'aide pour mettre une classe dans un fichier? :heink:


 
non pour comprendre le principe.
package etc je sais pas a quoi ça sert même si ça a pas de rapport je voudrais bien savoir.

Reply

Marsh Posté le 27-12-2002 à 18:46:08    

en effet ça marche, c'est plus simple que ce que je pensais.Mais bon c'est pas un peu la zone avec des centaines de classes ?

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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