Java入門 - 語言基礎 - 21.Scanner類

原文地址:http://www.work100.net/training/java-scanner.html
更多教程:光束雲 - 免費課程

Scanner類

序號 文內章節 視頻
1 概述 -
2 使用next方法 -
3 使用nextLine方法 -
4 next與nextLine區別 -

請參照如上章節導航進行閱讀

1.概述

java.util.Scanner 是 Java5 的新特徵,我們可以通過 Scanner 類來獲取用戶的輸入。

下面是創建 Scanner 對象的基本語法:

Scanner s = new Scanner(System.in);

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

2.使用next方法

import java.util.Scanner; 

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 從鍵盤接收數據

        // next方式接收字符串
        System.out.println("next方式接收:");
        // 判斷是否還有輸入
        if (scan.hasNext()) {
            String str1 = scan.next();
            System.out.println("輸入的數據爲:" + str1);
        }
        scan.close();
    }
}

執行以上程序輸出結果爲:

$ javac ScannerDemo.java
$ java ScannerDemo
next方式接收:
work100 net
輸入的數據爲:work100

可以看到 net 字符串並未輸出,接下來我們看 nextLine

3.使用nextLine方法

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 從鍵盤接收數據

        // nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判斷是否還有輸入
        if (scan.hasNextLine()) {
            String str2 = scan.nextLine();
            System.out.println("輸入的數據爲:" + str2);
        }
        scan.close();
    }
}

執行以上程序輸出結果爲:

$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
work100 net
輸入的數據爲:work100 net

可以看到 net 字符串輸出。

4.next()與nextLine()區別

next()

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

nextLine()

  • Enter 爲結束符,也就是說 nextLine() 方法返回的是輸入回車之前的所有字符
  • 可以獲得空白

如果要輸入 intfloat 類型的數據,在 Scanner 類中也有支持,但是在輸入之前最好先使用 hasNextXxx() 方法進行驗證,再使用 nextXxx() 來讀取:

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 從鍵盤接收數據
        int i = 0;
        float f = 0.0f;
        System.out.print("輸入整數:");
        if (scan.hasNextInt()) {
            // 判斷輸入的是否是整數
            i = scan.nextInt();
            // 接收整數
            System.out.println("整數數據:" + i);
        } else {
            // 輸入錯誤的信息
            System.out.println("輸入的不是整數!");
        }
        System.out.print("輸入小數:");
        if (scan.hasNextFloat()) {
            // 判斷輸入的是否是小數
            f = scan.nextFloat();
            // 接收小數
            System.out.println("小數數據:" + f);
        } else {
            // 輸入錯誤的信息
            System.out.println("輸入的不是小數!");
        }
        scan.close();
    }
}

執行以上程序輸出結果爲:

$ javac ScannerDemo.java
$ java ScannerDemo
輸入整數:12
整數數據:12
輸入小數:1.2
小數數據:1.2

以下實例我們可以輸入多個數字,並求其總和與平均數,每輸入一個數字用回車確認,通過輸入非數字來結束輸入並輸出執行結果:

import java.util.Scanner;

class ScannerDemo {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        double sum = 0;
        int m = 0;

        while (scan.hasNextDouble()) {
            double x = scan.nextDouble();
            m = m + 1;
            sum = sum + x;
        }

        System.out.println(m + "個數的和爲" + sum);
        System.out.println(m + "個數的平均值是" + (sum / m));
        scan.close();
    }
}

執行以上程序輸出結果爲:

$ javac ScannerDemo.java
$ java ScannerDemo
12
23
15
21.4
end
4個數的和爲71.4
4個數的平均值是17.85

上一篇:Stream和File和IO
下一篇:異常處理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章