Menu

Problème de boucle [Résolu]

Messages postés
59
Date d'inscription
mercredi 25 janvier 2017
Dernière intervention
17 janvier 2019
-
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
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
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
Messages postés
7240
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2019
431
2
Merci
bonjour, "ça marche pas": message d'erreur, comportement inattendu?
peut-être en testant ainsi:
while (reponse.equals("oui"))

Dire « Merci » 2

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 56021 internautes nous ont dit merci ce mois-ci

prototypejean1996
Messages postés
59
Date d'inscription
mercredi 25 janvier 2017
Dernière intervention
17 janvier 2019
-
Merci, ça a marché. Mais j'aimerais savoir pourquoi while (reponse == "oui") n'a pas marché. et pourquoi le votre a marché. merci
yg_be
Messages postés
7240
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2019
431 > prototypejean1996
Messages postés
59
Date d'inscription
mercredi 25 janvier 2017
Dernière intervention
17 janvier 2019
-
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=
KX
Messages postés
15915
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
19 janvier 2019
3627 > prototypejean1996
Messages postés
59
Date d'inscription
mercredi 25 janvier 2017
Dernière intervention
17 janvier 2019
-
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.
prototypejean1996
Messages postés
59
Date d'inscription
mercredi 25 janvier 2017
Dernière intervention
17 janvier 2019
-
ok. merci beaucoup
Commenter la réponse de yg_be