Bonjour à tous , j'étudie le JAVA avec l'aide d'un bouquin et je voudrais vous montrer mon premier programme et j'aimerai savoir ce que vous en pensez ?
Voici les codes sources
if(operat == '+') result = (a + b); if(operat == '-') result = (a - b); if(operat == '*') result = (a * b); if(operat == '/') result = (a / b); return result; } protectedstaticint demande() { int a = Clavier.lireInt("Votre premier chiffre ?"); int b = Clavier.lireInt("Votre deuxieme chiffre ?");
char operat = Clavier.lireChar("Votre operateur ?"); int result = calcul(a,b,operat); return result; }
}
/* La Classe Plus Ou Moins */
publicclass plusoumoins { double reponse; int chiffre = 0; // contructeur public plusoumoins() { Math.random(); } // contructeur public plusoumoins(int a) { Math.random(); } // methode publicint demande() { this.chiffre = Clavier.lireInt("Quel est le chiffre"); return chiffre; } // methode publicint plus() { System.out.println("Desole le chiffre est plus petit , veuillez reessayez .");
chiffre = this.demande(); return chiffre; } // methode publicint moins() { System.out.println("Desole le chiffre est plus grand , veuillez reessayez .");
chiffre = this.demande(); return chiffre; } // methode publicvoid bravo() { System.out.println("Bravo ! Vous avez trouve le bon chiffre "+chiffre); } }
/* La classe Theoreme */ publicclass Theoreme { publicdouble calcul_hypo(int cote1,int cote2) { int carre1 = cote1*cote1; int carre2 = cote2*cote2; int carre = carre1 + carre2; double hypo = Math.sqrt(carre); return hypo; } publicdouble calcul_cote(int cote,int hypo) { int hypo_carre = hypo*hypo; int cote_carre = cote*cote; int carre = hypo_carre-cote_carre; double cote2 = Math.sqrt(carre); return cote2; } }
/* La Classe Reciproque */ publicclass Reciproque { publicboolean calcul(int cote1,int hypo,int cote2) { boolean vrai_ou_faux; int cote_carre = cote1*cote1 + cote2*cote2; int hypo_carre = hypo*hypo; if(cote_carre == hypo_carre) {
vrai_ou_faux = true; } else {
vrai_ou_faux = false; }
return vrai_ou_faux; } }
Et bien sur mon script final , utilisant toutes ces classes
class programme { publicstaticvoid main(String[] args) { System.out.println("BONJOUR A TOUS !! ET BIENVENUE DANS MON PROGRAMME !"); System.out.println("Je vous propose plusieurs choix : "); System.out.println("1- Calculette : "); System.out.println("2- Jeu Plus ou Moins : "); System.out.println("3- Math pythagore : "); System.out.println("4- Math reciproque : "); int repons = Clavier.lireInt("Entrez le numero de votre choix"); System.out.println("Bien ! \n____________________________________________"); switch(repons) { case1 : System.out.println("Vous avez choisi d'utiliser la calculette");break; case2 : System.out.println("Vous avez choisi de jouer ");break; case3 : System.out.println("Vous avez choisi le theoreme de pythagore ");break; case4 : System.out.println("Vous avez choisi la reciproque de pythagore ");break;
default : System.out.println("Vous n'avez pas entrer un numero correct");break; } /* --------------------------------------------------------------------------------------------------
* Jeu PLusOuMoins
* -------------------------------------------------------------------------------------------------- */ if(repons == 2) {
char choix;
jeu : do {
plusoumoins a = new plusoumoins();
a.reponse = 12; int rep = (int)a.reponse; int chiffre = a.demande(); int fois = 5; System.out.println("Vous avez 5 chances"); do { if(chiffre < rep) {
a.moins();
fois--; } elseif(chiffre > rep) {
a.plus();
fois--; } elseif(chiffre == rep) {
a.bravo(); break; } System.out.println("Il vous reste "+ fois +" chance"); }while(fois > 0);
choix = Clavier.lireChar("Voulez vous continuer de jouer ? (o/n)"); }while(choix == 'o'); } /* --------------------------------------------------------------------------------------------------
* Calculette
* -------------------------------------------------------------------------------------------------- */ if(repons == 1) {
calculette a = new calculette();
char y_n; do { int result = a.demande(); System.out.println("Le resultat est "+result);
y_n = Clavier.lireChar("Voulez vous continuez ? (o/n)"); }while(y_n == 'o'); } /* --------------------------------------------------------------------------------------------------
* Theoreme de Pythagore
* -------------------------------------------------------------------------------------------------- */ if(repons == 3) {
char choix;
theo : do {
char calcul = Clavier.lireChar("Que voulez vous calculez ? (c pour 'cote'/ h pour 'hypothenuse')"); if(calcul == 'h') { int cote = Clavier.lireInt("Entrez la mesure d'un cote de votre triangle rectangle "); int cote2 = Clavier.lireInt("Puis celle de l'autre ");
Theoreme reme = new Theoreme(); double rem = reme.calcul_hypo(cote,cote2); System.out.println("L'hypothenuse de votre rectangle mesure "+(float)rem+" cm");
} elseif(calcul == 'c') { int cote = Clavier.lireInt("Entrez la mesure d'un cote de votre triangle rectangle "); int hypo = Clavier.lireInt("Puis celle de l'hypothenuse ");
Theoreme reme = new Theoreme(); double rem = reme.calcul_cote(cote,hypo); System.out.println("L'autre cote de votre rectangle mesure "+(float)rem+" cm"); } else { System.out.println("Nous ne pouvons pas calculer cette chose"); }
choix = Clavier.lireChar("Avez vous un autre calcule a faire ? (o/n)"); }while(choix == 'o'); } /* --------------------------------------------------------------------------------------------------
* Reciproque du Theoreme de Pythagore
* -------------------------------------------------------------------------------------------------- */ if(repons == 4) {
char choix;
reci : do { int cote = Clavier.lireInt("Entrez la mesure d'un cote de votre triangle "); int cote2 = Clavier.lireInt("Puis celle de l'autre "); int hypo = Clavier.lireInt("Puis celle de l'hypothenuse "); boolean v_ou_f;
Reciproque proque = new Reciproque();
v_ou_f = proque.calcul(cote,hypo,cote2); if(v_ou_f == true) { System.out.println("Ce triangle est bien rectangle"); } else { System.out.println("NON ! Ce triangle n'est pas rectangle"); }
choix = Clavier.lireChar("Avez vous une autre demande à faire ? (o/n)"); }while(choix == 'o'); } } }
alors d'abord pas mal du tout pour commencer avec un bouquin, c'est bien, et c'est presenté c'est agreable, bon ensuite qques petits trucs qui me derange un peu (parole de chieur)
Je pense que tu as le droit mais pourquoi tu mets, dans la classe calculette, des tas de if, disons que ce serait peut etre plus adapté de mettre un switch, mais bon ca c'est toi qui voit.
Ensuite, pour la demande du calculs dans la meme classe... d'habitude, quand tu fais un calcul, tu fais plutot le premier chiffre, le signe, et le second. moi je le ferait dans ce sens plutot
protectedstaticint demande() { int a = Clavier.lireInt("Votre premier chiffre ?");
char operat = Clavier.lireChar("Votre operateur ?"); int b = Clavier.lireInt("Votre deuxieme chiffre ?");
int result = calcul(a,b,operat); return result;
ensuite, dans la classe plus ou moins, tu fais une surcharge de constructeur, truc plutot joli, mais elle ne sert a rien car tu fais exactement la meme chose dans les deux constructeurs et tu n'utilise jamais a, donc enleve ce constructeur, non?
public plusoumoins() { Math.random(); } // contructeur public plusoumoins(int a)//je supprimerais celle la { Math.random(); }
Ensuite, j'aurais pas fait deux methodes grand et peti mais une methode ecart, dans lequel il y aurait eu un if, comme ca tu aurais juste eu a prendre le chiffre entré, le comparé, et ca aurait renvoyé la reponse en une seule methode, plutot que de faire la comparaison dans ta methode main, et ensuite de choisir la classe entre grand et petit (je dois etre clair...)
un truc comme ca
publicint plus() { System.out.println("Desole le chiffre est plus petit , veuillez reessayez .");
chiffre = this.demande(); return chiffre; } // methode publicint moins() { System.out.println("Desole le chiffre est plus grand , veuillez reessayez .");
chiffre = this.demande(); return chiffre; } // methode publicvoid bravo() { System.out.println("Bravo ! Vous avez trouve le bon chiffre "+chiffre); }
//moi je fais : //dans le constructeur, je donne a valeur de la reponse publicint ecart(int choix_joueur) { if(choix_joueur>reponse) System.out.printlnn("la reponse est plus petite"); elseif(choix_joueur<reponse) System.out.printlnn("la reponse est plus grande"); else System.out.println("bravo !!!"); return choix_joueur; }
Bon ensuite pour pythagore...les carres je mettrais des double, car tu pourrais avoir un coté faisant 2,5 cm de coté...
int cote_carre = cote1*cote1 + cote2*cote2; int hypo_carre = hypo*hypo; return(cote_carre == hypo_carre)
}
Ca c'est correct, tu vas renvoyé le boolean de ta condition, et c'est bcp plus rapide non?
Enfin, dans la methode main , pas grand chose a redire, sauf si tu change pythagore et ca reciproque pour mettre des doubles, faut que tu le fasses aussi dans la main.
et que dans la partie reciproquen, plutot que ecrire : if(vrai_ou_faux == true), tu peux ecrire if(vrai_ou_faux)
Le programme est bien présenté mais y'a quelquechose qui me chagrine. Ce programme est de niveau débutant et tu utilise déjà la notion de POO, je voulais juste savoir si tu avais compris la différence entre static et non static (pour tes fonctions).. Car on ne peut pas se lancer dans la POO sans en comprendre les bases
Nonon tu l'utilise bien pour le moment mais c'était pour m'assurer que tu ne recopiait pas un programme les yeux fermés sans comprendre la signification de certaines choses. Mais puisque u me dis que oui je te souhaite bonne continuation
Mon portfolio : https://www.artstation.com/tdugard
Mon portfolio : https://www.artstation.com/tdugard