第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么按任意鍵方法不會循環(huán)停止?

為什么按任意鍵方法不會循環(huán)停止?

慕容3067478 2022-07-20 10:34:54
我在這里找到的java中有這個方法。private void pressAnyKeyToContinue() {     try {         System.in.read();     }          catch(Exception e) {}   }我遇到的問題是當我想多次調(diào)用它時。我在打印如下消息的方法中使用它:private void keyMessage() {    System.out.print("Press any key to continue...");    pressAnyKeyToContinue();然后我在這里使用這個方法:public void method() {    message1();    for (Class class : classes) {        keyMessage();    }   }我遇到的問題是,當我首先調(diào)用 method() 時,它會打印出來。Otuput: Press any key to continue...然后我按一個鍵+回車。直到這里一切都完美,但它會打印:Output: Press any key to continue... //* times of the loop我的意思是它不允許我按任何鍵。它一直持續(xù)到循環(huán)結束。感謝您對我的英語的回答和抱歉。我知道這不好。
查看完整描述

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;

    }

}


查看完整回答
反對 回復 2022-07-20
  • 1 回答
  • 0 關注
  • 112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號