-1
我正在試驗一些控制檯輸入。通過System.in.read讀取輸入()
由於System.in.read()而言,我目前瞭解, 1.它從鍵盤讀取字符的 2.它將它們保存爲整數值,即需要投 3.它是行緩衝,即它讀取任何字符,直到ENTER被擊中。
現在我想明白到底發生了什麼,當我想讀一個字符,像這樣
do
{
char ch, answer = 'C', ignore;
System.out.println("Try to guess the correct letter");
ch = (char) System.in.read();
// discard any characters in the input buffer
do
{
ignore = (char) System.in.read();
}
while(ignore != '\n');
if(answer == ch) System.out.println("Right");
}
while(answer != ch);
我偶然發現了這個片段並插入我已經掌握了,雖然我打算打印語句後爲了讀取單個字符,該方法將讀取任何鍵入的字符,直到我按下回車鍵。
因此,在第二個循環中,我會放棄在第一個循環之後輸入的任何字母,直到按下ENTER鍵,對吧?
我知道由於遺漏了第二個do-while循環而導致的影響:回車將根據給定的if條件進行檢查。但是,它是如何工作的:第一個方法調用將真正導致只讀取一個字符,第二個方法讀取所有其他字符?
對不起,我的錯。當然,我們正在談論一個循環。 – 2015-02-23 20:33:36
就像我比如說,讀一個'A'然後回車。什麼會發生?我會讀A,跳到第二個循環,並繼續閱讀直到ENTER被擊中? – 2015-02-23 20:39:15
這就是你的程序會做的,是的。 – 2015-02-23 20:41:48