用戶交互Scanner
用戶交互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();
}
}
輸入正確時結果為:
輸入錯誤時: