1. 程式人生 > >Java Scanner 類詳解(附例子)學習

Java Scanner 類詳解(附例子)學習

在筆試程式設計過程中,關於資料的讀取如果迷迷糊糊,那後來的程式設計即使想法很對,實現很好,也是徒勞,於是在這裡認真總結了Java  Scanner 類的使用

通過 Scanner 類來獲取使用者的輸入,下面是建立 Scanner 物件的基本語法:

Scanner s = new Scanner(System.in); // 從鍵盤接收資料

接下來我們演示一個最簡單的資料輸入,並通過 Scanner 類的 next() 與 nextLine() 方法獲取輸入的字串,在讀取前我們一般需要 使用 hasNext 與 hasNextLine 判斷是否還有輸入的資料:

next() 與 nextLine() 區別

next()的使用方法演示:

 
  1. import java.util.Scanner;

  2.  
  3. public class scannertest {

  4.  
  5. public static void main(String[] args) {

  6. Scanner s = new Scanner(System.in); // 從鍵盤接收資料

  7. // next方式接收字串

  8. System.out.println("next方式接收:");

  9. // 判斷是否還有輸入

  10. if (s.hasNext()) {

  11. String str1 = s.next();

  12. System.out.println("輸入的資料為:" + str1);

  13. }

  14. s.close();

  15. }

  16. }

 

 
  1. next方式接收:

  2. hello world

  3. 輸入的資料為:hello

由結果可知:

  • 1、一定要讀取到有效字元後才可以結束輸入。
  • 2、對輸入有效字元之前遇到的空白,next() 方法會自動將其去掉。
  • 3、只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
  • next() 不能得到帶有空格的字串。

nextLine()的使用方法演示:

 
  1. import java.util.Scanner;

  2. public class scannertest2 {

  3.  
  4. public static void main(String[] args) {

  5.         Scanner s = new Scanner(System.in); // 從鍵盤接收資料

  6.         // next方式接收字串

  7.         System.out.println("nextLine方式接收:");

  8.         // 判斷是否還有輸入

  9.         if (s.hasNextLine()) {

  10.             String str2 = s.nextLine();

  11.             System.out.println("輸入的資料為:" + str2);

  12.         }

  13.         s.close();

  14.     }

  15. }

 

[plain] view plain copy

  1. <code class="language-java">nextLine方式接收:  
  2. hello world 2018  
  3. 輸入的資料為:hello world 2018</code>  

由上面可以看出,nextLine()方法具有以下特點:

  • 1、以Enter為結束符,也就是說 nextLine()方法返回的是輸入回車之前的所有字元;
  • 2、可以獲得空白,都會讀入,空格等均會被識別;

注意:如果要輸入 int 或 float 型別的資料,在 Scanner 類中也有支援,但是在輸入之前最好先使用 hasNextXxx() 方法進行驗證,再使用nextXxx() 來讀取,下面實現的功能是可以輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並輸出執行結果:

 
  1. import java.util.Scanner;

  2. public class scandemo {

  3.  
  4. public static void main(String[] args) {

  5. System.out.println("請輸入數字:");

  6. Scanner scan = new Scanner(System.in);

  7.  
  8. double sum = 0;

  9. int m = 0;

  10.  
  11. while (scan.hasNextDouble()) {

  12. double x = scan.nextDouble();

  13. m = m + 1;

  14. sum = sum + x;

  15. }

  16.  
  17. System.out.println(m + "個數的和為" + sum);

  18. System.out.println(m + "個數的平均值是" + (sum / m));

  19. scan.close();

  20. }

  21. }

 
  1. 請輸入數字:

  2. 20.0

  3. 30.0

  4. 40.0

  5. end

  6. 3個數的和為90.0

  7. 3個數的平均值是30.0