Boucle while, mauvaise utilisation
Résolu
Edgar Moerman
-
Edgar Moerman -
Edgar Moerman -
Bonjour, je suis en train d'apprendre le code java et j'ai écrit un code sur eclipse, il ne me signal une erreur que je ne comprend pas.
Voici le code en question:
import java.util.Scanner;
public class testwhileperso {
public static void main(String[] arg) {
String mdp;
Scanner sc = new Scanner(System.in);
while (mdp.equals("azerty")) //L'erreur est là <--
{
System.out.println("Mot de passe : ");
mdp = sc.nextLine();
System.out.println("Mot de passe non valide...");
}
System.out.println("Mot de passe valide...");
}
}
Alors que si j'utilise la condition "if" cette même ligne ne contiens pas d'erreur
Merci à vous pour votre aide,
Je pense que KX va répondre comme c'est son taf le java ^^
Voici le code en question:
import java.util.Scanner;
public class testwhileperso {
public static void main(String[] arg) {
String mdp;
Scanner sc = new Scanner(System.in);
while (mdp.equals("azerty")) //L'erreur est là <--
{
System.out.println("Mot de passe : ");
mdp = sc.nextLine();
System.out.println("Mot de passe non valide...");
}
System.out.println("Mot de passe valide...");
}
}
Alors que si j'utilise la condition "if" cette même ligne ne contiens pas d'erreur
Merci à vous pour votre aide,
Je pense que KX va répondre comme c'est son taf le java ^^
3 réponses
-
Quel message d'erreur ?
-
Il me demande de donné une valeur à la variable "mdp" sauf que je voudrais la saisir après au clavier
Merci -
Bonjour,
Le mieux dans ton cas est d'utiliser une boucle do/while, ça t'évite la première initialisation qui ne sert à rien.
Mais sinon pour utiliser la négation d'une condition tu as l'opérateur!
(prononcer "not" ou "pas")
do { System.out.println("Mot de passe : "); mdp = sc.nextLine(); } while (!mdp.equals("azerty"));-
-
Si tu prends ton code de départ, Eclipse te souligne en rouge
mdp.equals("azerty")en te disant quemdp
n'est pas initialisé, c'est à dire qu'il n'a pas de valeur.
Il faut lui en donner une (n'importe laquelle sauf "azerty") pour pouvoir évaluer une première fois ta condition de boucle.
String mdp = "inutile"; while (!mdp.equals("azerty")) {
Cela va donc faire un calcul inutile vu que l'on sait très bien que la condition sera toujours fausse la première fois... D'où l'intérêt du do/while qui n'évalue la condition qu'après avoir fait tourner la boucle au moins une fois. -
-