Loop Do while, ignorer en JAVA

Résolu/Fermé
willi_4185 Messages postés 41 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 6 octobre 2022 - 26 août 2022 à 01:51
willi_4185 Messages postés 41 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 6 octobre 2022 - 26 août 2022 à 13:56

Bonjour, dans le carde de ma technique en informatique, je dois créé un petit fichier code en Java dans le but de vérifier un mot de passe prédéfinie et un nom d'utilisateur prédéfinie également, problème, lorsque j'exécute mon code, le Do/While semble être totalement ignoré peut importe l'entrer de l'utilisateur.

Voici le code en question : 

package WIP;
import java.util.Scanner;

public class Main {
    private static final String Asd1 = null;
    private static final String Asd2 = null;
    public static void main(String[] args) {
        
        
        String passWord = Asd1;
        String userName = Asd2;
        
        System.out.println("Bienvenue sur Iwallet.com");

        Scanner sc = new Scanner(System.in);
        System.out.print("Entrez votre mot de passe : ");
        String PassWord = sc.nextLine();
        
        if (!PassWord.equals(passWord)) {
            } else { 
                    String PassWord1 = "0";
                do {
                    Scanner sc1 = new Scanner(System.in);
                    System.out.print("Veuillez entrer le bon mot de passe : ");
                    PassWord1 = sc1.nextLine();
                } while (!PassWord1.equals(passWord));
            }
        System.out.println("Vous avez le bon mot de passe !");

    }
}

Merci d'avance pour votre aide !
Windows / Chrome 104.0.0.0

A voir également:

1 réponse

jordane45 Messages postés 38222 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 juillet 2024 4 683
26 août 2022 à 07:51

Bonjour

Ton premier if me semble étrange

Comment passWord ne pourrait pas être égal à lui même ?


KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024 3 017
26 août 2022 à 08:31

Bonjour,

Il y a effectivement un problème avec le if, mais pas à ce niveau là, car il compare passWord et PassWord (le Java est sensible à la cassé, donc p minuscule et P majuscule, c'est pas la même variable)

Le problème c'est la négation de la condition if (!PassWord.equals(passWord)) { } else { ... } ce qui signifie que si le mot de passe est incorrect on ne fait rien, sinon (le mot de passe est correct) on réessaie.

En vrai, la condition if ne sert absolument à rien à part créer un bug inutile, la boucle suffit à gérer tous les cas.

Scanner sc = new Scanner(System.in);
String userPassWord;
do {
    System.out.print("Veuillez entrer le bon mot de passe : ");
    userPassWord = sc.nextLine();
} while (!userPassWord.equals(realPassWord));
0
willi_4185 Messages postés 41 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 6 octobre 2022 3 > KX Messages postés 16747 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 9 juillet 2024
26 août 2022 à 13:56

Tu as totalement raison et je m'en suis rendu compte au dépend de quelque heure de recherche sur le Net a comparé ma situation a d'autre, j'ai refait le tous et effectivement le Do / While suffit ;)

0
willi_4185 Messages postés 41 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 6 octobre 2022 3
26 août 2022 à 13:54

vrai, mais ce ne sont pas les même variables, toutefois j'ai réussi à faire fonctionner le tous en y passant un peu plus de temps, tout bête, la solution était de diriger le premier scan directement dans le Do étant donné que ce block de code sera de toute facon executé 

0