解決next()與nextLine()無法同時使用的問題
試試看,如果先使用 next() 再使用 nextLine() 會有什麼狀況?
在Scanner類別下,有next()與nextLine()兩種方法,next()是以空白或換行為區格,nextLine()則是以換行為區格讀取整行,當一起使用時,會出現nextLine()無法正常運作的問題。
會這樣子的原因是因為next()是抓取空白或\n換行字元以前的字串,所以next()抓完字串之後\n就被nextLine()抓住了,因此nextLine()只有抓到\n而已,沒有抓到應該抓的字串。
解決方法就是讓nextLine()重複抓取,直到抓到有字串為止。- import java.util.Scanner;
- public class Ch44
- {
- public static void main(String args[])
- {
- Scanner s=new Scanner(System.in);
- String str1, str2;
- System.out.print("請輸入一字串(不帶空白): ");
- str1=s.next();
- System.out.println(str1);
- System.out.print("請輸入一字串(帶空白): ");
- while((str2=s.nextLine()).equals(""));
- System.out.println(str2);
- }
- }
複製代碼- import java.util.Scanner;
- public class Ch44
- {
- public static void main(String args[])
- {
- Scanner s=new Scanner(System.in);
- String str1, str2;
- System.out.print("請輸入一字串(不帶空白): ");
- str1=s.next();
- System.out.println(str1);
- System.out.print("請輸入一字串(帶空白): ");
- while(true)
- {
- str2=s.nextLine();
- if(!str2.equals(""))
- break;
- }
- System.out.println(str2);
- }
- }
複製代碼- import java.util.Scanner;
- public class Ch44
- {
- public static void main(String args[])
- {
- Scanner s=new Scanner(System.in);
- String str1,str2;
- System.out.print("請輸入一字串(不帶空白): ");
- str1=s.next();
- System.out.println(str1);
- System.out.print("請輸入一字串(帶空白): ");
- str2=s.nextLine();
- str2=s.nextLine();
- System.out.println(str2);
- }
- }
複製代碼 |