Do / while与not equals不起作用

时间:2014-12-03 22:13:59

标签: java loops while-loop

我的do / while因为某些原因没有工作,我觉得它没有注意到!rep,它只是为我输入的任何字符循环。我尝试只放!rep.toUpperCase().equals("O")并且它有效,但我也想要N.

if (utilisateurDansListe(user) == true) {
    do {
        System.out.println("Voulez-vous vraiment supprimer " + user
                           + "?" + " O-Oui ou N-Non");
        rep = sc.next();
    } while (!rep.toUpperCase().equals("O")
             || !rep.toUpperCase().equals("N"));
    if (rep.toUpperCase().equals("O")) {
        monApp.listeUtilisateurs.remove(utilisateurChoisi);
        System.out.println("Utilisateur supprimer avec succes !");
    } else
        System.out.println(user + " n'a pas ete supprimer");
} else
    System.out.println("Utilisateur inexistant");

3 个答案:

答案 0 :(得分:1)

你的逻辑错了。你想要:

while (!rep.toUpperCase().equals("O") && !rep.toUpperCase().equals("N"));

也就是说,您希望在答案(不是O)和(不是N时循环运行。你也可以翻转逻辑:

while (!(rep.toUpperCase().equals("O") || rep.toUpperCase().equals("N")));

当答案不是(ON时运行。

答案 1 :(得分:1)

这里的布尔逻辑导致问题 -

while (!rep.toUpperCase().equals("O") || !rep.toUpperCase().equals("N"));

这里你基本上是在说,"虽然sc.next()not 'O'not 'N',但仍然会循环播放"。问题是,sc.next()永远不能满足“不是”的条件。或者不是' N'而是像这样使用AND条件:

while (!rep.toUpperCase().equals("O") && !rep.toUpperCase().equals("N"));

答案 2 :(得分:0)

简单。您的条件始终为。 任何字符串总是 " N"或" O"。