使用者互動Scanner

Cushion曾發表於2021-05-24

使用者互動Scanner

  • Java給我們提供了一個工具類,我們可以獲取使用者的輸入。java.util.Scanner 是Java5的新特徵,我們可以通過Scanner類來獲取使用者的輸入。

  • 基本語法:

    Scanner = new Scanner(System.in);

  • 通過Scanner類的next()與nextline()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料。

  • 用完scanner之後,最後要記得把這個關掉,注意凡是屬於io流的類,不關只會浪費資源。

Scanner物件

  • next():

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

    1. 以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字元。
    2. 可以獲得空白。

對比

next():

package com.main.java.Scanner;
    
import java.util.Scanner;

public class Test1 {

    public static void main(String[] args) {

        //建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);

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

        //判斷使用者有沒有輸入字串
        if(scanner.hasNext()){
            String str = scanner.next();//程式會等待使用者輸入完畢
            System.out.println("輸入的內容為:" + str);
        }

        scanner.close();
    }
}

結果:

image

nextLine():

package main.java.Scanner;

import java.util.Scanner;

public class Test2 {

    public static void main(String[] args) {

        //建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);

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

        //判斷使用者有沒有輸入字串
        if(scanner.hasNextLine()){
            String str = scanner.nextLine();//程式會等待使用者輸入完畢
            System.out.println("輸出的內容為:" + str);
        }

        scanner.close();
    }
}

結果為:

image

其他型別

以整形,浮點型為例(其他型別可以類比,scanner提供很多方法):

按著CTRL鍵,點選類即可檢視類的原始碼

package main.java.Scanner;

import java.util.Scanner;

public class Test3 {

    public static void main(String[] args) {

        //建立一個掃描器物件,用於接收鍵盤資料
        Scanner scanner = new Scanner(System.in);

        int i = 0;
        float f = 0.0f;

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

        //判斷使用者有沒有輸入資料
        if(scanner.hasNextInt()){
            i = scanner.nextInt();//程式會等待使用者輸入完畢
            System.out.println("整數資料:" + i);
        }else{
            System.out.println("輸入的不是整數資料!");
        }

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

        //判斷使用者有沒有輸入資料
        if(scanner.hasNextFloat()){
            f = scanner.nextFloat();//程式會等待使用者輸入完畢
            System.out.println("小數資料:" + f);
        }else{
            System.out.println("輸入的不是小數資料!");
        }

        scanner.close();
    }
}

輸入正確時結果為:

image

輸入錯誤時:

image

相關文章