我試圖寫下面的代碼來允許連續投擲硬幣並在輸入E時退出。不確定如果do-while循環是連續執行的正確方法,或者我應該使用其他方法。退出在java中輸入字符串的do-while循環
do {
guess = sc.next();
tossGenerator(guess);
}while(!guess.equals("E")||!guess.equals("e"));
所以,我才短語的代碼錯誤,因爲我不能走出循環做的或應採用不同的方法。請幫忙。謝謝。
我試圖寫下面的代碼來允許連續投擲硬幣並在輸入E時退出。不確定如果do-while循環是連續執行的正確方法,或者我應該使用其他方法。退出在java中輸入字符串的do-while循環
do {
guess = sc.next();
tossGenerator(guess);
}while(!guess.equals("E")||!guess.equals("e"));
所以,我才短語的代碼錯誤,因爲我不能走出循環做的或應採用不同的方法。請幫忙。謝謝。
變化&&
到||
:
} while (!guess.equals("E") && !guess.equals("e"));
或重新安排這樣的:
} while (!(guess.equals("E") || guess.equals("e")));
或者您可以使用String.equalsIgnoreCase()
並消除conjunction:
} while (!guess.equalsIgnoreCase("e"));
這需要'guess'在循環之前被初始化,這可能是對代碼的額外改變。 – chepner
退出條件應與AN一起d操作:
!guess.equals("E") && !guess.equals("e")
否則任何"E"
或"e"
,因爲如果它的「E」那就不是「E」,反之亦然會使平凡真實其中至少一個。
將其更改爲
while(!guess.equalsIgnoreCase("E"));
一個問題與您的代碼是,它會調用tossGenerator(guess)
即使guess
是「E」。另一個是guess
總是不會是「e」或不是「E」(它不能同時)。我會寫這樣的:
guess = sc.next();
while (!"e".equalsIgnoreCase(guess)) {
tossGenerator(guess);
guess = sc.next();
}
或者,使用for
循環:
for (guess = sc.next(); !"e".equalsIgnoreCase(guess); guess = sc.next()) {
tossGenerator(guess);
}
退房[德摩根定律(http://en.wikipedia.org/wiki/De_Morgan%27s_laws ) - 它有助於多重否定等。 – dasblinkenlight