j essaye d’apprendre le java par des programme simple
voila mon premier :
un lancé de dé (10 lancés) et si la somme des 2 dés fait 7, on ajoute 10 points au score
/*
* Main.java
*
* Created on 26 mars 2007, 19:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package nfe114chap01jeudede;
/**
*
* @author Florent
*/
public class Main {
/** Creates a new instance of Main */
public Main()
{
public String name;
int score;
int Facevalue;
int random1;
int random2;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Entrez votre Nom:");
name = new InputStreamReader(System.in);
for(i=0;i<10;i++)
{
System.out.println("Nombre de lancement des dés" +i);
System.out.println("Lancement du premier dé");
random1 = new Random();
System.out.println("Lancement du deuxième dé");
random2 = new Random();
if((random1+random2)==7)
score=score+10;
}
System.out.println("Bravo, vous etes dans les meilleurs scores");
}
}
mais il y a plein d erreur, notamment a la declaration de ma variable string! et je ne comprends pas trop pourquoi…
Apparemment tu n’es pas habitue’ aux objets
Les variables doivent etre dans ta classe et pas dans ton constructeur. Il sert juste a les initialiser, pas a les declarer. :non:
Essaye ca:
/*
* Main.java
*
* Created on 26 mars 2007, 19:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package nfe114chap01jeudede;
/**
*
* @author Florent
*/
public class Main {
private String name;
private int score;
private int Facevalue;
private int random1;
private int random2;
/** Creates a new instance of Main */
public Main()
{
/* initialise ici */
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
System.out.println("Entrez votre Nom:");
name = new InputStreamReader(System.in);
for(i=0;i<10;i++)
{
System.out.println("Nombre de lancement des dés" +i);
System.out.println("Lancement du premier dé");
random1 = new Random();
System.out.println("Lancement du deuxième dé");
random2 = new Random();
if((random1+random2)==7)
score=score+10;
}
System.out.println("Bravo, vous etes dans les meilleurs scores");
}
}
Private fait que la variable ne sera visible que a l’interieur de ta classe.
Et public comme son nom l’indique indique que ta variable pourra etre appele’ sans etre a l’interieur de ta classe.
Je te propose d’aller ici pour apprendre java et les objets car si je me souviens bien, en java tout ou presque est objet.
Pour le reste ton code semble bon, je suis faineant ce soir j’ai pas trop regarde’ la logique. :ane:
Bonne chance :super:
autre chose qui me choque. Tu créé 2 objet Random que tu additionnes par la suite. En gros ça revient à additionner leur adresse (=pointeur en C).
Dans la classe Math, tu as une méthode random() qui te renvoie un float entre 0.0 et 1.0
Pour ton prog, il suffirait de faire
int lancer1 = (int)(Math.random()*6)
Ouaip, puis pour bien commencer avec l’objet, il vaut mieux faire ton code dans les méthode d’instance de la classe plutôt que dans le main ou les méthodes statiques en général.
donc tu crée une instance de Main, et tu lance un Main.uneMethode() et tu ne fait rien d’autre dans le main: quand tu commencera à faire du polymorphisme (de la surcharge de méthode etc.) ça t’évitera des problèmes.
petit détail, le nommage en Java est important: le nom de classe doit représenter ce qu’elle fait et “Main” c’est pas explicite.
ete pour le nom de package il y a une convention aussi, c’est un nom de domaine inversé (si tu en as un) avec ensuite le nom du projet ou autre spération en bib:
exemple
fr.florent42.lancementdede
à mon avis, il travaille avec Netbeans. Cet ide te permet de créer rapidement des classes et si tu lu indique que c’est la classe principale, il la nomme Main (ouais c’est nul cette fonction)
Ah oui d’accord, c’est un peu nul ces outils qui génèrent le code un peu n’importe comment, comme together aussi.
Pour moi un outil, soit il te génère tou, et il le fait bien jusqu’au bout, et tu n’as pas à modifier ni voir les classes, soit il te laisse tranquille et il te laisse faire ton code.
Florent, Utilise Eclipse! ok c’est galère au début quand on ne sait pas bien créer sont projet, mais il y a vraiment toutes les foncitonalités pour faire du bon code.
effectivement j’utilise Netbeans et effectivement je suis connais peu l objet…etant plus un habitué du PHP4
mais je pense que java en vaut vraiment la peine et je veux m y interesser, car j ai a terme un projet en entreprise (simple!) mais j aimerais pas connaitre un peu plus que ca a terme
Pour l’instant je vais essayer de faire fonctionner ce code simple, et puis après je le remettrais un peu dans les règles de l art avec votre aide si ca ne vous derange pas!
j ai un autre pb qui apparait légèrement plus loin:
name = new InputStreamReader(System.in); < cannot find symbol
edit : c’est normal si tu fais tout ton code dans le main.
commence par créer une méthode dans ta classe qui reprendra tout le code, puis de ton main tu appelles cette méthode.
/*
* Main.java
*
* Created on 26 mars 2007, 19:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package nfe114chap01jeudede;
import java.io.*;
import java.util.Scanner;
import java.util.Random;
/**
*
* @author Florent
*/
public class Main {
private String name;
private int score;
private int Facevalue;
private int random1;
private int random2;
/** Creates a new instance of Main */
public Main()
{
/* initialise ici */
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
lancement_de();
}
public lancement_de()
{
System.out.println("Entrez votre Nom:");
String name = new Scanner(System.in).nextLine();
for(int i=0;i<10;i++)
{
System.out.println("Nombre de lancement des dés" +i);
Random rd = new Random();
System.out.println("Lancement du premier dé");
int n = rd.nextInt();
System.out.println("Lancement du deuxième dé");
int m = rd.nextInt();
if (n + m == 7)
score=score+10;
}
System.out.println("Bravo, vous etes dans les meilleurs scores");
}
}
Java est différent du langage C. Ici il faut que tu commence par créer une classe Main. Puis ensuite tu utilise la réference pour appeler la méthode lancement_de()
public class Main
{
public static void main(String[] args)
{
Main reference = new Main(); //création de la classe en appelant son constructeur
reference.lancement_de(); //utilisation de sa méthode
}
//Constructeur
public Main()
{
}
//Méthode permettant de faire une série de lancement de dé
private void lancment_de()
{
//TODO
}
}
mais une question bete mais…a quoi sert public Main?
Donc ainsi, il est tres facilement possible de decouper le code en créant une classe par exemple qui fera un calcul, une autre qui affichera le resultat et une autre qui mettra tout dans la se de données juste en ajoutant d un coté les classes et d un autre les reference aus main avec le nom de la méthode?
ai je bien compris?
Es til possible de raisonner ainsi totu sachant que les variables peuvent passer d une méthode a l autre puisqu elle sont interne a la classe et non aux méthode?
Le “public Main” c’est ce qu’on appelle le constructeur de la classe. Mais bon, là tu t’embrouilles un peu car tu as appelé la classe “Main”, d’habitude il vaut mieux choisir un autre nom. Donc si tu appelles ta classe autrement, tu remplaces ce “public Main()” par “public NomDeLaClasse()”. Un constructeur est une fonction particulière, dont tu ne précises aucun type de retour (pas de int, char ou autre…) et qui est appelée lorsque tu alloues un nouvel objet de cette classe avec l’opérateur “new”.
Exact, en gros tu découpes ton code en différents modules, chaque module pouvant contenir des variables et des fonctions.
Exact encore, une variable définie a l’intérieur d’une classe est accessible via toutes les fonctions de la classe.