使用者互動Scanner
-
Java給我們提供了一個工具類,我們可以獲取使用者的輸入。java.util.Scanner 是Java5的新特徵,我們可以通過Scanner類來獲取使用者的輸入。
-
基本語法:
Scanner = new Scanner(System.in);
-
通過Scanner類的next()與nextline()方法獲取輸入的字串,在讀取前我們一般需要使用hasNext()與hasNextLine()判斷是否還有輸入的資料。
-
用完scanner之後,最後要記得把這個關掉,注意凡是屬於io流的類,不關只會浪費資源。
Scanner物件
-
next():
- 一定要讀取到有效字元後才可以結束輸入。
- 對輸入有效字元之前遇到的空白,next()方法會自動將其去掉。
- 只有輸入有效字元後才將其後面輸入的空白作為分隔符或者結束符。
- next()不能得到帶有空格的字串。
-
nextLine():
- 以Enter為結束符,也就是說nextLine()方法返回的是輸入回車之前的所有字元。
- 可以獲得空白。
對比
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();
}
}
結果:
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();
}
}
結果為:
其他型別
以整形,浮點型為例(其他型別可以類比,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();
}
}
輸入正確時結果為:
輸入錯誤時: