Board logo

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

作者: 陳品肇    時間: 2019-7-27 15:34     標題: 解決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. }
複製代碼

作者: 陳柏霖    時間: 2019-7-27 17:25

  1. import java.util.Arrays;
  2. import java.util.Scanner;


  3. public class World {

  4.         public static void main(String[] args) {
  5.                 // TODO 自動產生的方法 Stub

  6.                 Scanner x=new Scanner(System.in);
  7.                 String str1 ,str2;
  8.                 int a;
  9.                 float b;
  10.                 System.out.println("請輸入字串(不帶空白):");
  11.                 str2=x.next();
  12.                 System.out.println(str2);
  13.                 System.out.println("請輸入字串(帶空白):");
  14.                 str1=x.nextLine();
  15.                 str1=x.nextLine();
  16.                 System.out.println(str1);
  17. }
  18. }
複製代碼

作者: 章幼莛    時間: 2019-7-27 17:25

  1. import java.util.Arrays;
  2. import java.util.Scanner;

  3. public class Ch01 {

  4.         public static void main(String[] args) {
  5.                 Scanner c=new Scanner(System.in);
  6.                 String str1,str2;
  7.                 System.out.print("請輸入字串一:");
  8.                 str1=c.next();
  9.                 System.out.println(str1);
  10.                 System.out.print("請輸入字串二:");
  11.                 str2=c.nextLine();
  12.                 str2=c.nextLine();
  13.                 System.out.println(str2);
  14.         }

  15. }
複製代碼

作者: 蔡依宸    時間: 2019-7-27 17:28

  1. import  java.util.Scanner;
  2. public class World
  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.     }
  17. }
複製代碼

作者: 戴安利    時間: 2019-7-27 17:29

  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3. public class Haha1
  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.           
  13.            System.out.print("請輸入一個字串(帶空白): ");
  14.            while((str2=s.nextLine()).equals(""));
  15.            System.out.println(str2);
  16.         }
  17. }
複製代碼

作者: 蔡季庭    時間: 2019-7-27 17:30

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

作者: 戴唯陞    時間: 2019-7-27 17:30

  1. import java.util.Scanner;
  2. public class hello01 {

  3.         public static void main(String[] args) {
  4.                 // TODO 自動產生的方法 Stub
  5.                
  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.         }

  17. }
複製代碼

作者: 陳智鈞    時間: 2019-7-27 17:31

  1. import java.util.Scanner;
  2. public class Ch01
  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