Aide pour programme java - Java - Programmation
Marsh Posté le 04-01-2015 à 10:35:39
Bonjour,
Hum les bases du Java sans l'algorithmie c'est assez drôle ( mais bon on peut pas en vouloir à l'Etat de faire des efforts )
Alors ta première partie de code est bien tu as juste un soucis au niveau de l'analyse de ce que l'utilisateur devra saisir.
Ce que tu souhaite ici, c'est demander à l'utilisateur s'y il souhaite lire le règlement, simplement après avoir récupérer la saisie de l'utilisateur avec
Code :
|
en espérant t'avoir aider.
Marsh Posté le 04-01-2015 à 10:52:06
julienr66 a écrit : Bonsoir, |
Pour autant que je me souvienne, la méthode "compareTo()" permet une comparaison lexicographique (plus petit ou plus grand). Normalement cette méthode retourne une valeur entière qui devrait être -1, 0 ou 1 et pas une valeur booléenne. Dans ton cas je pense que tu devrais plutôt écrire:
Code :
|
Bien entendu, cela suppose que l'utilisateur réponde par "oui" ou "non" en minuscule.
En java il n'y a pas de possibilité de comparer un objet avec plusieurs autres en une seule opération.
Marsh Posté le 04-01-2015 à 14:21:26
Bonjour,
Merci pour vos réponses,
OrcusZ j'avais auparavant aussi pensé à un simple if/else mais dans ce cas la si l'utilisateur répond n'importe quel autre réponse que oui, la suite
s'affichera, or j'aimerai que la question se répète tant qu'il ne s'agit pas de oui --> Qui affiche les règles, ou de non --> Qui passe à la suite.
leonhard si je comprend bien ce que tu m'as écrit, c'est procédé de façon inverse? Je rentre mon if/else dans le do/while lorsque la réponse équivaut à "oui" ou "non"? Je pensais que compareTo était l'inverse de String.equals(string), merci de m'avoir prevenu que ce n'était pas le cas, mais ducoup il n'y a aucune ecriture pour le contraire de String.equals(string)?
Merci pour vos réponses
Marsh Posté le 04-01-2015 à 16:11:09
julienr66 a écrit : Bonjour, |
Que veux-tu dire par "l'inverse de equals()" ? Il y a une erreur dans ce que j'ai écrit.
il faut écrire
Code :
|
Il fallait rajouter le not (!) avant les conditions...
algorithmiquement c'est équivalent à
Code :
|
Donc tu reste dans cette première boucle tant que l'utilisateur n'a pas entré soit "oui" soit "non". Une fois qu'un de ces mot est entré alors la condition générale vire à "false" (je te laisse faire la table de vérité pour t'en convaincre) et ton programme sort de la liste pour continuer le traitement.
Si tu tiens absolument à utiliser les "compareTo()" à la place des "equals()", alors il faut formuler condition de la manière suivante:
Code :
|
mais d'un point de vue programmation je trouve cela moins bon parce que l'information qui t'intéresse c'est de savoir si le choix est égal ou différent de "oui" et "non".
Marsh Posté le 04-01-2015 à 16:18:13
Merci beaucoup pour ton aide en effet, maintenant avec le not (!) devant je comprend, Ce que je voulais dire par contraire de equal c'est :
Pour les Variables de chiffres/nombres comme int on emploie "==" et son inverse "!=" C'était juste sa mais pour les String
Je n'utiliserai plus compareTo votre méthode me convient (et pardon pour l'erreur || au lieu du ou && )
Bonne fin de journée
Marsh Posté le 06-01-2015 à 16:35:56
Idéalement, si tu veux ne pas faire attention à la casse, un equalsIgnoreCase serait plus approprié qu'un equals. Ca te permet d'accepter les saisies du type "Oui", "OuI", "OUI", etc.
Tu peux aussi laisser tomber la déclaration de la variable choix en dehors de la boucle, car elle sera écrasée dans la 1ere itération de ton do/while :
Code :
|
Autres conseils en vrac :
- n'hésite pas aussi à créer des fonctions pour éclater les différents modules de ta classe (ex : une fonction pour les règles, une pour le lancement d'une partie, etc.)
- le nommage de variables a, b, c, i, etc. n'est pas propre : il faut des noms explicites, sans quoi tu vas vite t'y perdre (conseil supplémentaire au passage : ici, "oui" et "non" sont des constantes. Essaye de les déclarer en tant que telles)
Marsh Posté le 07-01-2015 à 16:47:14
Merci Kekman, pour la variable string je l'avais supprimé de moi même déja, mais sa vous ne pouviez pas le deviner ^^ , pour ce qui est de equalsIgnoreCase, je l'avais deja rencontrer dans mes cours mais je m'en souvenais plus, merci ^^
Pour le premier conseil par contre j'ai pas compris x)
Marsh Posté le 04-01-2015 à 01:29:51
Bonsoir,
Je viens sur ce forum pour demandé un peu d'aide, Je suis en Terminale Scientifique en Option ISN,
Durant 6 mois (très peu d'heure par semaine) on nous a enseigné les bases java sur Eclipse donc mon niveau est pas
très haut ^^ Pour la fin d'année nous devons présentés à un jury un programme créer par binome entre Janvier et Mai.
J'ai pensé à programmer le jeu des petits chevaux, mais malheureusement rien qu'avec le début je cale sur quelque chose :
import java.util.Scanner;
import java.util.Random;
public class petits_chevaux {
public static void main(String[] args) {
Scanner dlc=new Scanner(System.in);
System.out.println("Bienvenue sur la plateforme de jeu << Les petits chevaux catalan >>" );
System.out.println("Desirez-vous lire les règles du jeu?" );
String a="oui";
String b="non";
String choix=dlc.nextLine();
do {System.out.println("Veuillez répondre par oui ou non s'il vous plait" );
choix=dlc.nextLine();}
while (choix.compareTo(a)||(choix.compareTo(b)));
if (choix.equals(a)) {
System.out.println(" Voici les règles: \n \n Deux joueurs vont devoir s'affronter, Chacun d'entre eux disposent d'un camps \n avec deux pions. Afin de commencer, les joueurs vont"
+ " tirer aléatoirement un \n dé à 6 faces. A chaque fois qu'un joueur fera le chiffre 6, celui-ci pourra \n sortir son pion sur le plateau. **** Le plateau est constitué d'un"
+ " parcours \n de cases qui se suivent successivement. Le but est alors simple, le premier \n joueur arrivant à finir le parcours avec tout ces pions "
+ "gagne la partie. \n Cependant il existe quelques règles supplémentaire. Lors du parcours, \n aucun pion ne peut en dépasser un autre, si il arrive que deux pions \n soient l'un derrière "
+ " l'autre, le seul moyen de passer est de faire \n un lancé de dé qui permettra de tomber sur la même case et ainsi donc \n manger le pion du camps adverse qui retournera dans son camps innitial. \n"
+ " Si deux de vos pions sont proches l'un l'autre, il n'est pas possible \n pour le second pion de dépasser le premier. Si l'un des joueurs effectue un 6, \n il pourra alors relancer le dé."
+ "A la fin du parcours, il y aura un échelle de chiffre \n à gravir, pour chaque marche de l'echelle il faudra effectuer un lancé de dé qui \n équivaut au chiffre de la case."
+ " Attention ! Si votre pion est posé sur la case de \n départ du parcours du joueur adverse, et que ce dernier fait un 6 votre pion sera \n alors manger automatiquement "
+ "et renvoyer directement dans votre camps. Bon jeu " );}
else { System.out.println(" Nous pouvons commencer à lancer une partie ?" );
}}}
Le problème dans mon programme est ce que j'ai surligné en rouge/gras, pour comparé un String avec deux autres String en même temps, comment fait -on s'il vous plait? et y aurait-il deja une autre erreur que je n'aurais pas perçut?
Cordialement
( merci de ne pas se moquer de mon niveau comme certaines autres personnes sur d'autre forum svp )