JAVA IO:Scanner類
阿新 • • 發佈:2017-07-23
nerd bsp 字符 都是 sep exception import exc end
使用Scanner類接收輸入數據。
JAVA提供了專門的輸入數據類,此類可以完成BufferedReader類的功能,也可以方便的對輸入數據進行驗證,此類存放於JAVA.UTILL包中。
常用方法如下:
此類不在java.io中,而在java.utill類,所以此類是一個工具類。
1,使用Scanner接收鍵盤輸入數據
package 類集; 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) ; } };
運行結果:
輸入數據:2123
輸入的數據為:2123
比直接使用BufferedReader類方便,但是以上程序還是存在問題。
如果輸入數據之間存在空格,會以空格為分隔符。如果要想輸入空格,則必須修改分隔符,將分隔符變成"\n"。
Pattern delimiter() 返回此 Scanner 當前正在用於匹配分隔符的 Pattern。
修改分隔符:
package 類集; import java.util.* ; public class ScannerDemo01{ 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) ; } };
輸入結果:
輸入數據:3243 423423 43242
輸入的數據為:3243 423423 43242
之前輸入都是以字符串形式返回,實際上也可以使用Scanner方便返回整數或者小數。
有以下方法:
接收整數:
1,判斷是否是整數,如果是,返回true:hasNextInt()。
2,public int getInt();
接收小數:
1,判斷是否小數,:hasNextFloat()
2,public float getFloat()
package 類集; import java.util.* ; public class ScannerDemo01{ 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("輸入的不是小數!") ; } } };
運行結果:
輸入整數:32 整數數據:32 輸入小數:12312 小數數據:12312.0
處理日期類型
Scanner類雖然可以接受各種類型,但是對於日期型卻無法接收!
如果要想接收Data類型的數據,只能通過字符串轉型,但是接收的時候依然可以使用Scanner類中提供的方法驗證:
驗證:public String hasnext(Pattern pattern)
接收:public String netxt(Pattern pattern)
package 類集; import java.text.SimpleDateFormat; import java.util.* ; public class ScannerDemo01{ 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) ; } };
運行結果:
輸入日期(yyyy-MM-dd):2032-90-90
Mon Aug 29 00:00:00 CST 2039
還可以直接從文件中讀取信息。
package 類集; import java.io.File; import java.text.SimpleDateFormat; import java.util.* ; public class ScannerDemo01{ 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) ; } };
運行結果:
文件中內容如下:
實際讀取結果:(因為他默認以空格為分隔符)
文件內容為:321312312312 43 3432
JAVA IO:Scanner類