Algorithme " Boucle "
Résolu
Jiko-java
Messages postés
186
Date d'inscription
Statut
Membre
Dernière intervention
-
Jiko-java Messages postés 186 Date d'inscription Statut Membre Dernière intervention -
Jiko-java Messages postés 186 Date d'inscription Statut Membre Dernière intervention -
Bonjours , voilà j'ai fait un ptit programme qui consiste a deviner un nombre de 0 à 100 et "l'ordinateur " doit essayer de le trouver , voilà mais je trouve mon code assez lourds , chargé , et j'ai l'impression utiliser beaucoup de référence mémoire pour rien , je sais que je commet encore beaucoup d'erreur comme le fait d'utiliser Des System et des Scanner dans mes méthodes mais je ne trouve pas d'autre altérnatives :/ .. Quelqu'un peut il m'aider à l'améliorer tant au niveaux du code , qu'au niveaux algorithmique Merci !.
Voici mon code :
Voici mon code :
public class C4 { public static java.util.Scanner scanner = new java.util.Scanner(System.in); public static void main(String[]args){ System.out.println("Penser à un nombre je vais essayer de le trouver "); int nombreMyst = nombreMystere(); System.out.println("j'ai mis " + nombreMyst + " tentatives pour trouver votre nombre " ); } public static int nombreMystere(){ int valMin = 0; int valMax = 100; char carac; int nombreOrdi; int cmt = 0; do{ System.out.println("Est-ce votre nombre ?"); nombreOrdi = unEntierAuHasardEntre(valMin,valMax); if(nombreOrdi == valMin && valMin < 100){ if(valMax == valMin){ System.out.println("Vous etes un mauvais joueur"); return nombreOrdi; } valMin = (nombreOrdi + 1); nombreOrdi = valMin; } if(nombreOrdi == valMax && valMax < 100){ if(valMax == valMin){ System.out.println("Vous etes un mauvais joueur"); return nombreOrdi; } valMax = (nombreOrdi - 1); nombreOrdi = valMax; } System.out.println(nombreOrdi); carac = lirecarac(); if(carac == '+'){ valMin = nombreOrdi; } if(nombreOrdi == valMax){ valMax = (nombreOrdi+1); } if(carac == '-'){ valMax = nombreOrdi; } cmt++; }while(carac != '='); return cmt; } public static char lirecarac(){ char reponse; do{ reponse = scanner.next().charAt(0); if(reponse != '+' && reponse != '-' && reponse != '='){ System.out.println("Veuillez + , - ou = "); } if(reponse == '+'){ return reponse; } if(reponse == '-'){ return reponse; } if(reponse == '='){ return reponse; } }while(reponse != '+' && reponse != '-' && reponse != '='); return reponse; } public static int unEntierAuHasardEntre (int valeurMinimale, int valeurMaximale){ double nombreReel; int resultat; nombreReel = Math.random(); resultat = (int) (nombreReel * (valeurMaximale - valeurMinimale + 1)) + valeurMinimale; return resultat; } }
A voir également:
- Algorithme " Boucle "
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 pdf - Forum Algorithmes / Méthodes
- Télé samsung s'éteint et se rallume en boucle - Forum Téléviseurs
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
1 réponse
Bonjour,
je sais que je commet encore beaucoup d'erreur comme le fait d'utiliser Des System et des Scanner dans mes méthodes mais je ne trouve pas d'autre altérnatives :/
Tu as déjà des exemples dans tes discussions précédentes. Il faut découper ton code en méthodes, leur rajouter des paramètres, et faire de la transmission de paramètres d'une méthode à l'autre.
Le bon découpage pour moi, c'est de n'avoir aucun System/Scanner dans les même méthodes que les if/while.
je sais que je commet encore beaucoup d'erreur comme le fait d'utiliser Des System et des Scanner dans mes méthodes mais je ne trouve pas d'autre altérnatives :/
Tu as déjà des exemples dans tes discussions précédentes. Il faut découper ton code en méthodes, leur rajouter des paramètres, et faire de la transmission de paramètres d'une méthode à l'autre.
Le bon découpage pour moi, c'est de n'avoir aucun System/Scanner dans les même méthodes que les if/while.
À noter qu'au delà de la séparation de System.out et Scanner dans des méthodes différentes je les ai même basculé dans des classes différentes.
Dans de vrai programmes Java ces classes là pourraient même être dans des modules différents pour marquer l'architecture n-tiers de Java. Il pourrait d'ailleurs y avoir plusieurs classes Message (ou mécanisme équivalent) pour gérer plusieurs langues.
concevoir et à comprendre cette forme d'architecture , cela étant certainement dû au fait que je n'ai encore jamais manipulé autant de méthode et de classe simultanément , j'essaierais de m'en inspiré de tant à autres pour mes prochains programmes Merci encore.