为什么像condition
这样的布尔条件总是返回true?即使变量reponse
等于常量OUI
或NON
;
final String OUI = "O";
final String NON = "N";
String reponse = OUI;
// some code was omitted
do {
// some code was omitted
// true
boolean condition = false;
do {
System.out.println(MSG_SOL_TRONCON);
reponse = mScanner.nextLine();
// Debug
System.out.println("Reponse:" + reponse + ":fin");
/*
// Boucle infinie, problème avec la condition
// Infinite Loop
condition = !((reponse == NON) || (reponse == OUI));
System.out.println("Condition : " + condition);
if (condition) {
System.out.println(MSG_ERR_TRONCON);
} // if
*/
} while(condition);
} while (reponse != NON);
答案 0 :(得分:0)
在您拥有的行
condition =!((reponse == NON)||(reponse == OUI));
您需要修复此条件才能使用字符串相等性检查。 ==仅在比较数值和大多数原始数据类型时有效。由于字符串是单独的类和非基本数据类型,因此必须使用字符串方法来检查是否相等。 就像@bradimus说的那样,你需要像
这样的东西condition =!((response.equals(NON)||(response.equals(OUI));
相反,因为.equals是一个字符串方法
这是功能文档:https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#equals%28java.lang.Object%29