Boucle while, mauvaise utilisation

Résolu
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 ^^

3 réponses

  1. Modérateur
    Quel message d'erreur ?
    0
    1. Il me demande de donné une valeur à la variable "mdp" sauf que je voudrais la saisir après au clavier
      Merci
      0
      1. Modérateur
        Donnes-lui une valeur par défaut différente de celle attendu.
        0
      2. Ok, je viens de faire comme tu ma dit, mais je ne rentre pas dans la boucle, je passe directement à "Mot de passe valide..."
        0
      3. Modérateur
        Oui, tu boucle tant que le MDP est bon ...
        0
      4. Je voudrais bouclé quant il n'est pas bon justement :/
        0
      5. J'ai ecrit "equals" mais il n'y à pas genre "unequals" ?
        0
    2. Modérateur
      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"));
      0
      1. Ah, voilà un code qui marche x) merci, je me demandais comment faire cette inéquation, merci.
        Je ne comprend pas, la première initialisation ? dans le cas ou je veux rédiger mon code avec while et non do/while comment devrais-je mis prendre ?
        0
      2. Modérateur
        Si tu prends ton code de départ, Eclipse te souligne en rouge
        mdp.equals("azerty")
        en te disant que
        mdp
        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.
        0
      3. Super, tout compris, merci bcp :)
        0