装饰类Scanner实例浅析

来源:互联网 发布:java me模拟器 编辑:程序博客网 时间:2024/06/16 00:15

JDK1.5之后JAVA提供专门的输入数据类,可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,此类存放在java.util包中。

public ScannerFilethrows FileNotFoundExeption <从文件中接收内容>

           InputStream

 

Boolean Scanner.hasNext(Pattern) <判断是否符合指定正则标准>

              hasNextInt()             整数

              hasNextFloat()           小数

 

String        .next() <接收内容>

             .next(Pattern)<接收内容进行验证>

int           .nextInt()   <接收数字>

float         .nextFloat()

public class Main10 {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);}}

以上的输入数据代码实际上是存在问题的,如果输入数据间存在空格,则会以空格为分隔符,如果想要输入空格,必须修改分隔符,将分隔符变为“\n”。

Scannerscan=new Scanner(System.in);//从键盘接收数据

             scan.useDelimiter("\n");

             Stringstr =scan.next();

返回整数或是小数

有以下方法:

接收整数:

      判断是否整数:public Boolean hasNextInt();是整数返回true

      接收数据:public int nextInt()

接收小数:

      判断是否是小数:public Boolean hasNextFloat();

      接收数据:public float nextFloat()

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("input integer:");if(scan.hasNextInt()){i = scan.nextInt();System.out.println("integer data:"+i);}else{System.out.println("input not integer!");scan.next();}System.out.print("input float");if(scan.hasNextFloat()){f = scan.nextFloat();System.out.println("float data:"+f);}else{System.out.println("input not float");}}}

Scanner无法接收日期型数据,但是在接收时依然可以使用Scanner类中提供的方法进行验证:

      验证:public String hasNext(Pattern pattern)

      接收:public String next(String pattern)

public class ScannerDemo01{public static void main(String args[]){Scanner scan = new Scanner(System.in);String str = null;Date date = null;System.out.println("input date(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("input format is error!");}System.out.println(date);}}

还可以直接从文件中读取信息。

public class ScannerDemo01 {public static void main(String args[]) {File f = new File("F:\\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("file contents are:" + str);}}


原创粉丝点击