我的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");
答案 0 :(得分:1)
你的逻辑错了。你想要:
while (!rep.toUpperCase().equals("O") && !rep.toUpperCase().equals("N"));
也就是说,您希望在答案(不是O
)和(不是N
)时循环运行。你也可以翻转逻辑:
while (!(rep.toUpperCase().equals("O") || rep.toUpperCase().equals("N")));
当答案不是(O
或N
)时运行。
答案 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"。