Board logo

標題: 解決next()與nextLine()無法同時使用的問題 [打印本頁]

作者: tonyh    時間: 2017-12-9 14:57     標題: 解決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. }
複製代碼

作者: 黃宥鈞    時間: 2017-12-9 15:09

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

作者: 蔡幸融    時間: 2017-12-9 15:11

  1. import java.util.Scanner;
  2. public class Ch41
  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.         str2=s.next();
  10.         System.out.println(str2);
  11.         System.out.print("請輸入一字串(帶空白): ");
  12.         str1=s.nextLine();
  13.         str1=s.nextLine();
  14.         System.out.println(str1);
  15.     }
  16. }
複製代碼

作者: 莊旻叡    時間: 2017-12-9 15:13

  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. }[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]
作者: 洪榜蔓    時間: 2017-12-9 15:31

  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. }

  16. import java.util.Scanner;
  17. public class Ch44
  18. {
  19.     public static void main(String args[])
  20.     {
  21.          Scanner s=new Scanner(System.in);
  22.          String str1,str2;
  23.          System.out.print("請輸入一字串(不帶空白): ");
  24.          str1=s.next();
  25.          System.out.println(str1);
  26.          System.out.print("請輸入一字串(帶空白): ");
  27.          str2=s.nextLine();
  28.          str2=s.nextLine();
  29.          System.out.println(str2);
  30.     }
  31. }
複製代碼

作者: 蕭澧邦    時間: 2017-12-15 21:23

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





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2