1. Scanner是jdk1.5新增的工具類,jdk1.4以前使用字符流來(lái)實(shí)現(xiàn)
2. Scanner可以方便的獲取用戶的鍵盤(pán)輸入
3. Scanner是一個(gè)基于正則表達(dá)式的文本掃描器,可以從文件,輸入流,字符串中解析出基本類型值和字符串值.
4. Scanner主要使用兩個(gè)方法來(lái)掃描輸入
hasNextXxx():是否還有下一個(gè)輸入項(xiàng).如果是字符串可以省略XXX
nexXXX():獲取下一個(gè)輸入項(xiàng).
5. Scanner默認(rèn)使用空白(包括空格,tab空白和回車等)作為多個(gè)輸入項(xiàng)之間的分隔符.可以使用useDelimiter()修改分隔符.
代碼清單:
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.util.Scanner;
public class ScannerTest {
public static Scanner sc = null;
// scanner是jdk1.5的工具類,在1.4中使用字符包裝流(BufferedReader)來(lái)讀取鍵盤(pán)輸入
// System.in是字節(jié)流,InputStreamReader是轉(zhuǎn)換流
// 與scanner的區(qū)別是,bufferedReader只能讀取String對(duì)象,不能讀取其他基本類型的輸入項(xiàng)
public static void fromKey0() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (br.readLine() != null) {
System.out.println("鍵盤(pán)輸入的內(nèi)容:"+br.readLine());
}
}
// 從鍵盤(pán)輸入int,只會(huì)獲取鍵盤(pán)輸入的int類型,其他的類型不會(huì)打印
public static void fromKeyInt() {
sc = new Scanner(System.in);
while (sc.hasNextInt()) {
System.out.println("鍵盤(pán)輸入的內(nèi)容:"+sc.nextInt());
}
}
// 從鍵盤(pán)輸入的內(nèi)容,將空格等空白視為輸入項(xiàng)的分隔符
public static void fromKey() {
sc = new Scanner(System.in);
while (sc.hasNext()) {
System.out.println("鍵盤(pán)輸入的內(nèi)容:"+sc.next());
}
}
// 修改分隔符為"\n",這樣除非輸入回車換行,否則會(huì)當(dāng)作一個(gè)輸入項(xiàng)來(lái)處理
public static void fromKey1() {
sc = new Scanner(System.in);
sc.useDelimiter("\n");
while (sc.hasNext()) {
System.out.println("鍵盤(pán)輸入的內(nèi)容:"+sc.next());
}
}
// 同樣的,scanner也可以從文件中讀取內(nèi)容,nextLine()可以每次讀取一行,和上面設(shè)置分隔符為"\n"是同樣的效果
public static void fromFile() throws Exception {
sc = new Scanner(new File("c:\\bcmwl5.log"));
while (sc.hasNextLine()) {
System.out.println("文件中的內(nèi)容:"+sc.nextLine());
}
}
public static void main(String[] args) throws Exception{
fromKeyInt();
//fromFile();
//fromKey();
//fromKey1();
}
}