Java_IO_Scanner类
2016-07-21 18:39
573 查看
一、Scanner简介
Scanner类可以完成BufferedReader类的功能,也可以方便的对输入数据进行验证,存在于java.util包中。二、常用方法:
a) public boolean hasNext(Patternpattern)——判断输入的数据是否符合指定的正则b) public boolean hasNexInt()——判断输入的是否是整数
c) public boolean hasNextFloat()——判断输入的是否是小数
d) public String next()——接收内容
e) public String next(Patternpattern)——接收内容,进行正则验证
f) public int nextInt( ) ——接收数字
g) public float nextFloat( )——接收小数
h) public ScanneruseDelimiter(String pattern )——设置读取的分隔符
三、示例
示例一:用Scanner接收键盘输入数据:
public class Test { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); // 从键盘接收数据 System.out.print("输入数据:"); String str = sc.next(); // 接收数据 System.out.println("输入的数据为:" + str); } }
注意:以上输入数据代码实际上是存在问题的,如果输入数据之间存在了空格,则会以空格为分割符,如果要想输入空格的话,则就必须修改分割符,将分割符变为“\n”
修改分割符:
public class Test { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); // 从键盘接收数据 System.out.print("输入数据:"); sc.useDelimiter("\n") ; //设置读取的分割符 String str = sc.next(); // 接收数据 System.out.println("输入的数据为:" + str); } }
示例二:
通过Scanner接收整数或小数,并校验。
public class Test { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); // 从键盘接收数据 int i = 0 ; float f= 0.0f; System.out.println("输入整数:"); if(sc.hasNextInt()){//判断输入的是否是整数 i= sc.nextInt();//接收数据 System.out.println("整数是:"+i); }else{ System.out.println("输入的不是整数"); } System.out.println("输入小数"); if(sc.hasNextFloat()){//判断输入的是否为小数 f= sc.nextFloat();//接收数据 System.out.println("小数数据:"+f); }else{ System.out.println("输入的不是小数"); } } }
注意:Scanner类对于日期型的数据却无法接收。
如果想接收Date类型的数据,则只能通过字符串转型。
验证:publicString hasNext(Pattern)
接收:publicString next(String pattern)
public class Test { public static void main(String[] args) throws IOException { 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("输入的日期格式错误!"); return; } System.out.println(date); } }
示例三:从文件中读取信息
public class Test { public static void main(String[] args) throws IOException { File f = new File("E:\\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); } }
注意:此程序只能读取第一行数据,因为存在换行,所以读取一行数据,就认为读完了。
修改代码(考虑换行的功能):
public class Test { public static void main(String[] args) throws IOException { File f = new File("E:\\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); } }
相关文章推荐
- Mysql IO 内存方面的优化
- Node.js 的异步 IO 性能探讨
- SQL Server误区30日谈 第22天 资源调控器可以调控IO
- mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结
- java中的Io(input与output)操作总结(一)
- GO语言的IO方法实例小结
- java中的Io(input与output)操作总结(四)
- C#路径,文件,目录及IO常见操作汇总
- SQL语句实现查询当前数据库IO等待状况
- Java进阶教程之IO基础
- java中的Io(input与output)操作总结(三)
- Java 1.0和Java 1.1 的IO类的比较
- Java输入流Scanner/BufferedReader使用方法示例
- Java中的BufferedInputStream与BufferedOutputStream使用示例
- JAVA IO API使用详解
- Java NIO和IO的区别
- java中Scanner类的简单用法分享
- Java编程中最基础的文件和目录操作方法详解
- Python中使用select模块实现非阻塞的IO
- Python通过poll实现异步IO的方法