在Scanner中,有next()與nextLine()兩種方法
next()是以空白或換行為區格,nextLine()則是以換行為區格讀取整行

當一起使用時,會出現遇到nextLine()無法正常運作的問題
如以下程式碼

1import java.util.Scanner;
2public class test
3{
4    public static void main(String [] argv)
5    {
6        Scanner cin = new Scanner(System.in);
7        String str = cin.next();//輸入123
8        String str2 = cin.nextLine();//輸入321
9         
10        //只顯示123
11        System.out.println(str + " " + str2);
12    }
13}

會這樣子的原因是因為next()是抓取空白或\n換行字元以前的字串,所以next()抓完字串之後\n就被nextLine()抓住了,因此nextLine()只有抓到\n而已,沒有抓到應該抓的字串。

解決方法就是不斷讓nextLine()重複抓取,直到抓到有字串為止:

1import java.util.Scanner;
2public class test
3{
4    public static void main(String [] argv)
5    {
6        Scanner cin = new Scanner(System.in);
7        String str = cin.next();//輸入123
8        String str2;
9        //不斷重複抓取,直到抓到字串為止
10        while( (str2 = cin.nextLine()).equals("") );//輸入321
11         
12        //只顯示123
13        System.out.println(str + " " + str2);
14    }
15}
Categories: Java