Problème de boucle
Résolu
prototypejean1996
Messages postés
78
Statut
Membre
-
prototypejean1996 Messages postés 78 Statut Membre -
prototypejean1996 Messages postés 78 Statut Membre -
Bonsoir.
je suis débutant java. j'ai un problème en appliquant mon cours. Dans l'exemple reçu a l'école pour réaliser un boucle on a utiliser un caractère donc char. Mais moi je veux le faire avec un string mais ça marche pas.
voici le code
Donc je veux qu'a chaque fois qu'on répond oui le programme exécute le boucle.
merci
je suis débutant java. j'ai un problème en appliquant mon cours. Dans l'exemple reçu a l'école pour réaliser un boucle on a utiliser un caractère donc char. Mais moi je veux le faire avec un string mais ça marche pas.
voici le code
import java.util.Scanner;
public class texte {
public static void main(String[] args) {
// TODO Auto-generated method stub
//Une variable vide
String prenom;
String reponse = "oui";
//Notre objet Scanner, n'oubliez pas l'import de java.util.Scanner !
Scanner sc = new Scanner(System.in);
//Tant que la réponse donnée est égale à oui…
while (reponse == "oui")
{
//On affiche une instruction
System.out.println("Donnez un prénom : ");
//On récupère le prénom saisi
prenom = sc.nextLine();
//On affiche notre phrase avec le prénom
System.out.println("Bonjour " +prenom+ ", comment vas-tu ?");
//On demande si la personne veut faire un autre essai
System.out.println("Voulez-vous réessayer ? ");
//On récupère la réponse de l'utilisateur
reponse = sc.nextLine();
}
System.out.println("Au revoir…");
}
}
Donc je veux qu'a chaque fois qu'on répond oui le programme exécute le boucle.
merci
1 réponse
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, "ça marche pas": message d'erreur, comportement inattendu?
peut-être en testant ainsi:while (reponse.equals("oui"))-
Merci, ça a marché. Mais j'aimerais savoir pourquoi while (reponse == "oui") n'a pas marché. et pourquoi le votre a marché. merci
- les strings sont en fait des adresses vers la mémoire, tu ne peux pas les comparer comme tu le fais avec des variables simples comme des char.
ton test vérifie si les deux éléments sont présents au même endroit dans la mémoire, le mien vérifie si les deux éléments ont un contenu identique.
plus de détails sur l'enregistrement des string en mémoire: http://thecodersbreakfast.net/index.php?post%2F2008%2F02%2F22%2F24-comparaison-des-chaines-accentuees-en-java= - Pour aller plus loin dans l'explication, il faudrait s'intéresser à la méthode intern()
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#intern()
Quand un String est écrit en dur dans le code, il est intern(), mais par défaut il ne l'est pas.
-
-