1. 程式人生 > 其它 >(輸入與輸出支援)Scanner類

(輸入與輸出支援)Scanner類

技術標籤:Java語言高階特性java

Scanner類

java.util.Scanner是從JDK1.5之後追加的一個程式類,其主要的目的是為了解決輸入流的訪問問題單位,可以理解為BufferedReader的替代功能類。

在Scanner類有如下幾個核心的方法:

  • 構造:publicScanner​(InputStreamsource)
  • 判斷是否有資料:publicbooleanhasNext()
  • 取出資料:publicStringnext()

範例:使用Scanner實現鍵盤輸入

public static void main(String[] args) throws IOException {
		
		Scanner sc = new  Scanner(System.in);
		System.out.println();
		if(sc.hasNextInt()) {	//判斷是否有整數輸入
			int age = sc.nextInt();	//直接獲取數字
			System.out.println("年齡:"+age);
		}else {
			System.out.println("輸入年格式齡錯誤");
		}
                sc.close();
	}

使用Scanner輸入資料還有一個最大的特點是可以直接利用正則進行驗證判斷。

範例:輸入一個人的生日(yyyy-MM-dd)

public static void main(String[] args) throws IOException, ParseException {
		
		Scanner sc = new  Scanner(System.in);
		System.out.println();
		if(sc.hasNext("\\d{4}-\\d{2}-\\d{2}")) {	//判斷是否符合格式
			String str = sc.next("\\d{4}-\\d{2}-\\d{2}");	
			System.out.println("生日:"+new SimpleDateFormat("yyy-MM-dd").parse(str));
		}else {
			System.out.println("輸格式錯誤");
		}
	}

現在可以發現Scanner的整體設計要好於BufferedReader,而且比直接使用InputStream類讀取方便。