返回列表 發帖

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

試試看,如果先使用 next() 再使用 nextLine() 會有什麼狀況?



在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 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.          str2=s.nextLine();
  14.          System.out.println(str2);
  15.     }
  16. }
複製代碼

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

  15.     }
  16. }
複製代碼

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. }
複製代碼
Huang chenhao

TOP

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

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.out.print("請輸入一字串(不帶空白): ");
  9.         str1=s.next();
  10.         System.out.println(str1);
  11.         System.out.print("請輸入一字串(帶空白): ");
  12.         //while((str2=s.nextLine()).equals(""));
  13.         str2=s.nextLine();
  14.         str2=s.nextLine();
  15.         System.out.println(str2);
  16.     }
  17. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class Ch34
  3. {
  4.     public static void main(String agrs[])
  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.         str2=s.nextLine();
  14.         System.out.println(str2);
  15.     }
  16. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class Aa
  3. {
  4.   public static void main(String args[])
  5.   {
  6.     Scanner a=new Scanner(System.in);
  7.     String x,y;
  8.     System.out.print("輸入字串不代空白:");
  9.     x=a.next();
  10.     System.out.println(x);
  11.     System.out.print("輸入字串代空白");
  12.     while((y=a.nextLine()).equals(""));
  13.     System.out.print(y);
  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.          str2=s.nextLine();
  14.          System.out.println(str2);
  15.     }
  16. }
複製代碼
李宇澤Oscar

TOP

  1. import java.util.Scanner;
  2. public class Ch42
  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.          str2=s.nextLine();
  14.          System.out.println(str2);
  15.     }
  16. }
複製代碼

TOP

  1. import java.util.Scanner;
  2. public class Aa
  3. {
  4.   public static void main(String args[])
  5.   {
  6.     Scanner a=new Scanner(System.in);
  7.     String x,y;
  8.     System.out.print("輸入字串不代空白:");
  9.     x=a.next();
  10.     System.out.println(x);
  11.     System.out.print("輸入字串代空白");
  12.     y=a.nextLine();
  13.     y=a.nextLine();
  14.     System.out.print(y);

  15.   }
  16. }
複製代碼

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.          str2=s.nextLine();
  14.          System.out.println(str2);
  15.     }
  16. }
複製代碼

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 Ch43
  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

本帖最後由 董宸佑 於 2020-9-11 19:58 編輯

[code]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);
    }
}[code]

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. }
複製代碼
李宇澤Oscar

TOP

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

TOP

返回列表