Scanner使用中緩衝區清空

2021-08-04 20:32:12 字數 558 閱讀 7519

在獲取鍵盤輸入時常常用到scanner,但在連續使用scanner的過程中會發生緩衝區不空,從而不會阻塞的問題。

system.out.print("請輸入使用者名稱:");

string username=sc.nextline();

system.out.print("請輸入密碼:");

string password=sc.nextline();

在上面的例子中就會出現在"請輸入使用者名稱:"處不發生阻塞,直接連續輸出"請輸入使用者名稱:""請輸入密碼:"。在鍵入資料後只會獲取第乙個輸入,並且賦給password,相當於把使用者名稱賦給了密碼

採用新建乙個scanner來清空緩衝區這樣就不會出現上述的問題了。

scanner sc=new scanner(system.in);

system.out.print("請輸入使用者名稱:");

string username=sc.nextline();

system.out.print("請輸入密碼:");

string password=sc.nextline();

清空輸入緩衝區

清空輸入緩衝區 cin.clear 清除錯誤標記,比如要求輸入int型,但我們輸入了char型,就會導致輸入錯誤,產生錯誤標記 cin.sync 清空輸入緩衝區 cin.ignore n,ch 第乙個引數是清空輸入緩衝區的大小,第二個引數是終止字元 注 終止字元也會被丟棄 常用形式有以下兩種 cin...

檔案操作 清空緩衝區

在進行輸入輸出操作或者檔案讀寫時,由於涉及到緩衝區的使用,可能遇到一些問題。例如,scanf 函式用於從stdin輸入資訊,在從標準輸入緩衝區讀取資訊時,往往以 n 作為結束輸入的標誌,但是換行符 n 仍然殘留在緩衝區中,下次再次從標準輸入讀取資訊時,殘留的換行符 n 會被當做有效資訊讀取,即,上一...

我這樣清空緩衝區

若緩衝區是在棧內分配是的則不需要手動清除,因為系統會幫你做完成這個工作,但是如果緩衝區分配在堆內的話就要自己手動清除了,不然會發生記憶體洩露。產生的問題就是占用的資源不能及時釋放,從而影響系統效能。清理緩衝區的三種方法 fflush stdin fflush stdin 在vc上可以使用,但是其他編...