1 回答

TA貢獻1820條經(jīng)驗 獲得超10個贊
標準控制臺 java 根本無法做到這一點。輸入的所有字符都會被緩沖,直到您按下回車鍵,此時它們都可以在 System.in 中使用。
所以,如果你循環(huán)你的“按任意鍵”代碼,比如說,5 次,然后我輸入句子“你好!”,你的代碼仍然停留在第一個,等待一個鍵。如果我然后按回車鍵,所有 5 個循環(huán)立即完成,如果您稍后調(diào)用 waitForKey,它會立即返回另外 2 到 3 次(一次用于感嘆號,一次用于換行符.. 如果在 Windows 上兩次,因為他們的換行符是 2 個字符)。
TL;DR:你不能用System.in.read()這個。完全沒有。
一種解決方案是要求用戶不要按“任何”鍵,而是按“輸入”鍵,然后在將分隔符設置為換行符后使用例如掃描儀的next()調(diào)用,或者編寫一直調(diào)用System.in.read()直到它返回的代碼' \n':
private void pressEnterToContinue() {
while (true) {
int c;
try {
c = System.in.read();
} catch (IOException e) {
throw new RuntimeException(e);
}
if (c == -1 || c == '\n') return;
}
}
添加回答
舉報