2 votes

Éviter les doublons dans la saisie des noms par le scanner

J'ai un peu de code avec lequel j'ai des problèmes en ce moment. J'essaie d'empêcher le joueur d'un petit jeu en mode texte que je suis en train de concevoir. J'ai écrit une condition pour éviter que l'utilisateur ne saisisse des données en double. Cependant, je crois qu'il me manque quelque chose, mais je ne suis pas sûr que ce soit le cas. Voici mon code :

List<Player> playerList = new ArrayList<>();
String name;

for (int i = 0; i < numberOfPlayers; i++) {
    System.out.println("Name of player " + (i + 1));
    name = scanner.next();

    if (playerList.contains(name)) {
        System.out.println("Please enter a different name!");
        i--;
    }
    playerList.add(new Player(name, STARTING_MONEY, 0));

}

return playerList;

Je suis complètement novice en ce qui concerne Java, donc je rate probablement quelque chose d'important, mais après une recherche assez approfondie, je n'arrive pas à trouver la réponse. Toute suggestion serait utile, merci !

2voto

luk2302 Points 31354

Il vous manque une simple continue pour ne pas poursuivre l'exécution du corps de la boucle. Ou un else pour ajouter le joueur à la liste uniquement si le nom n'existe pas encore :

Soit

if (playerList.contains(name)) {
    System.out.println("Please enter a different name!");
    i--;
    continue;
}

Ou

if (playerList.contains(name)) {
    System.out.println("Please enter a different name!");
    i--;
} else {
    playerList.add(new Player(name, STARTING_MONEY, 0));
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X