返回列表 發帖

解決next()與nextLine()無法同時使用的問題

本帖最後由 tonyh 於 2014-12-13 18:18 編輯

在Scanner類別下, 有next()與nextLine()兩種方法, next()是以空白或換行為區格,nextLine()則是以換行為區格讀取整行, 當一起使用時, 會出現遇到nextLine()無法正常運作的問題.

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

解決方法就是不斷讓nextLine()重複抓取, 直到抓到有字串為止:
  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          Scanner s=new Scanner(System.in);
  7.          String str1, str2;
  8.          System.out.print("請輸入一字串(不帶空白): ");
  9.          str1=s.next();
  10.          System.out.println(str1);
  11.          System.out.print("請輸入一字串(帶空白): ");
  12.          while((str2=s.nextLine()).equals(""));
  13.          System.out.println(str2);
  14.     }
  15. }
複製代碼

  1. import java.util.Scanner;
  2. public class ch39
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          Scanner s=new Scanner(System.in);
  7.          String str1, str2;
  8.          System.out.print("請輸入一字串(不帶空白): ");
  9.          str1=s.next();
  10.          System.out.println(str1);
  11.          System.out.print("請輸入一字串(帶空白): ");
  12.          while((str2=s.nextLine()).equals(""));
  13.          System.out.println(str2);
  14.     }
  15. }
複製代碼

TOP

本帖最後由 周雍程 於 2014-12-13 17:48 編輯
  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          Scanner s=new Scanner(System.in);
  7.          String str1, str2;
  8.          System.out.print("請輸入一字串(不帶空白): ");
  9.          str1=s.next();
  10.          System.out.println(str1);
  11.          System.out.print("請輸入一字串(帶空白): ");
  12.          while((str2=s.nextLine()).equals(""));
  13.          System.out.println(str2);
  14.     }
  15. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          Scanner s=new Scanner(System.in);
  7.          String str1, str2;
  8.          System.out.print("請輸入一字串(不帶空白): ");
  9.          str1=s.next();
  10.          System.out.println(str1);
  11.          System.out.print("請輸入一字串(帶空白): ");
  12.          while((str2=s.nextLine()).equals(""));
  13.          System.out.println(str2);
  14.     }
  15. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          Scanner s=new Scanner(System.in);
  7.          String str1, str2;
  8.          System.out.print("請輸入一字串(不帶空白): ");
  9.          str1=s.next();
  10.          System.out.println(str1);
  11.          System.out.print("請輸入一字串(帶空白): ");
  12.          while((str2=s.nextLine()).equals(""));
  13.          System.out.println(str2);
  14.     }
  15. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.     public static void main(String args[])
  5.     {
  6.             Scanner s=new Scanner(System.in);
  7.             String str1,str2;
  8.             System.out.print("請輸入一字串(不帶空白): ");
  9.             str1=s.next();
  10.             System.out.println(str1);
  11.             System.out.print("請輸入一字串(帶空白): ");
  12.             str2=s.nextLine();
  13.             while ((str2=s.nextLine()).equals(""));
  14.             System.out.println(str2);
  15.     }
  16. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class ch43
  3. {
  4.     public static void main(String args[])
  5.     {
  6.       Scanner s=new Scanner(System.in);
  7.       String str1,str2;
  8.       System.outy.print("請輸入一字串(帶空白):");
  9.       str1=s.next();
  10.       System.out.println(str1);
  11.       System.out.print("請輸入一字串(不帶空白):");
  12.       while((str2=s.nextline()).equals(""));
  13.       System.out.println(str2);
  14.     }
  15. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class ch44
  3. {
  4.         public static void main(String args[])
  5.         {
  6.                 Scanner s=new Scanner(System.in);
  7.                 String s1,s2;
  8.                 System.out.print("輸入一字串(不帶空白): ");
  9.                 s2=s.next();
  10.                 System.out.println(s2);
  11.                 System.out.print("輸入一字串(帶空白): ");
  12.                 while((s1=s.nextLine()).equals(""));
  13.                 s1=s.nextLine();
  14.                 System.out.println(s1);
  15.                
  16.                
  17.         }
  18. }
複製代碼

TOP

返回列表