閱讀453 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java IO--Scanner

Scanner簡介:


適應Scanner接收鍵盤的輸入數據:
import java.util.* ;
public class ScannerDemo01{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in) ;	// 從鍵盤接收數據
		System.out.print("輸入數據:") ;
		String str = scan.next() ;	// 接收數據
		System.out.println("輸入的數據為:" + str) ;
	}
};
修改分隔符:
import java.util.* ;
public class ScannerDemo02{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in) ;	// 從鍵盤接收數據
		System.out.print("輸入數據:") ;
		scan.useDelimiter("\n") ;
		String str = scan.next() ;	// 接收數據
		System.out.println("輸入的數據為:" + str) ;
	}
};
import java.util.* ;
public class ScannerDemo03{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in) ;	// 從鍵盤接收數據
		int i = 0 ;
		float f = 0.0f ;
		System.out.print("輸入整數:") ;
		if(scan.hasNextInt()){	// 判斷輸入的是否是整數
			i = scan.nextInt() ;	// 接收整數
			System.out.println("整數數據:" + i) ;
		}else{
			System.out.println("輸入的不是整數!") ;
		}
		System.out.print("輸入小數:") ;
		if(scan.hasNextFloat()){	// 判斷輸入的是否是小數
			f = scan.nextFloat() ;	// 接收小數
			System.out.println("小數數據:" + f) ;
		}else{
			System.out.println("輸入的不是小數!") ;
		}
	}
};
Scanner這個類雖然可以接收各種類型,但是對於日期型的數據卻無法接收。
如果要想接收Date類型的數據,則隻能通過字符串轉型,但是在接收的時候依然可以使用Scanner類中提供的方法進行驗證:
·驗證:public String hasNext(Pattern)
·接收:public String next(String pattern)
import java.util.* ;
import java.text.* ;
public class ScannerDemo04{
	public static void main(String args[]){
		Scanner scan = new Scanner(System.in) ;	// 從鍵盤接收數據
		String str = null ;
		Date date = null ;
		System.out.print("輸入日期(yyyy-MM-dd):") ;
		if(scan.hasNext("^\\d{4}-\\d{2}-\\d{2}$")){	// 判斷
			str = scan.next("^\\d{4}-\\d{2}-\\d{2}$") ;	// 接收
			try{
				date = new SimpleDateFormat("yyyy-MM-dd").parse(str) ;
			}catch(Exception e){}
		}else{
			System.out.println("輸入的日期格式錯誤!") ;
		}
		System.out.println(date) ;
	}
};
還可以直接從文件中讀取信息。假設:d:\test.txt文件中寫入內容:
使用Scanner直接讀取文件內容:
import java.util.* ;
import java.text.* ;
import java.io.* ;
public class ScannerDemo05{
	public static void main(String args[]){
		File f = new File("D:" + File.separator + "test.txt") ;	// 指定操作文件
		Scanner scan = null ;
		try{
			scan = new Scanner(f) ;	// 從鍵盤接收數據
		}catch(Exception e){}
		String str = null ;
		if(scan.hasNext()){
			str = scan.next();
		}
		System.out.println("文件內容為:" + str) ;
	}
};
現在的文件內容確實讀取進來了。但是此程序依然不完美。以上隻能讀取第一行數據,因為存在換行,所以就認為讀完了。
所以在使用Scanner的時候,要考慮換行的功能:
import java.util.* ;
import java.text.* ;
import java.io.* ;
public class ScannerDemo05{
	public static void main(String args[]){
		File f = new File("D:" + File.separator + "test.txt") ;	// 指定操作文件
		Scanner scan = null ;
		try{
			scan = new Scanner(f) ;	// 從鍵盤接收數據
		}catch(Exception e){}
		StringBuffer str = new StringBuffer() ;
		while(scan.hasNext()){
			str.append(scan.next()).append('\n')	;	//	取數據
		}
		System.out.println("文件內容為:" + str) ;
	}
};

最後更新:2017-04-03 14:54:15

  上一篇:go [Qt教程] 第46篇 進階(六) 國際化
  下一篇:go SetCooperativeLevel函數介紹(設置協作等級)