今天做題遇到的……
由於讀入的字符串可能包含空格,所以采用nextLine。
int n = sc.nextInt();for(int i=0; i<n; i++) {String s = sc.nextLine();System.out.println(s);}上面的代碼只會輸出n-1個字符串,最后一個沒有輸出,原因nextInt()方法會讀取下一個int型標志的token,但是焦點不會移動到下一行,仍然處在這一行上。當使用nextLine()方法時會讀取改行剩余的所有的內容,包括換行符,然后把焦點移動到下一行的開頭,所以這樣就無法接收到下一行輸入的String類型的變量。
解決方案
int n = sc.nextInt();for(int i=0; i<n; i++) {String s = sc.next();s += sc.nextLine();System.out.println(s);}原因: next()方法是以換行或者空格符為分界線接收下一個String類型變量,不過並沒有提取換行或者空格,所以生成的s並不包含換行。
