从头认识java-11.5 扫描输入(1)-简介
来源:互联网 发布:帝国cms 栏目绑定域名 编辑:程序博客网 时间:2024/04/29 09:32
这一章节我们来讨论一下扫描输入。
因为很多时候我们都需要从文本文件里面读取相应的文本,然后进行处理,在输入到其他地方, 这个时候就需要我们下面介绍的扫描输入。
1.通常情况
package com.ray.ch11;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.Scanner;public class Test {private BufferedReader input = new BufferedReader(new StringReader("raylee\n31\n1.77"));public BufferedReader getInput() {return input;}public void setInput(BufferedReader input) {this.input = input;}public static void main(String[] args) throws IOException {Test test = new Test();System.out.println("name:" + test.getInput().readLine());System.out.println("age:"+ Integer.parseInt(test.getInput().readLine()));System.out.println("height"+ Double.parseDouble(test.getInput().readLine()));System.out.println("height"+ Double.parseDouble(test.getInput().readLine()));}}
输出:
name:raylee
age:31
height1.77
Exception in thread "main" java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:989)
at java.lang.Double.parseDouble(Double.java:510)
at com.ray.ch11.Test.main(Test.java:29)
上面的是通常的情况,我们使用reader读取一段文本,然后通过readline来读取字符串,然后再强转成各种类型,最后将会放到某个对象里面。
但是这样的操作无疑是有非常多的步骤,而且在处理的过程中非常容易出错。
因此我们下面结束scanner,将减少上面的一些操作步骤。
还有就是,reader里面没有判断操作,因此很容易出现运行时异常的情况。
2.使用Scanner
package com.ray.ch11;import java.io.BufferedReader;import java.io.IOException;import java.io.StringReader;import java.util.Scanner;public class Test {private BufferedReader input = new BufferedReader(new StringReader("raylee\n31\n1.77"));public BufferedReader getInput() {return input;}public void setInput(BufferedReader input) {this.input = input;}public static void main(String[] args) throws IOException {Test test = new Test();Scanner scanner = new Scanner(test.getInput());if (scanner.hasNext()) {System.out.println("name:" + scanner.nextLine());}if (scanner.hasNext()) {System.out.println("age:" + scanner.nextInt());}if (scanner.hasNext()) {System.out.println("height:" + scanner.nextDouble());}}}
通过scanner我们减少了强转的过程,而且使得代码更加干净简洁。
而且可以通过hasNext方法判断后续还有没有其他字符,同时hasNext里面还可以包含其他参数从而提高灵活性。
总结:这一章节我们介绍了扫描输入,并且介绍了scanner的一些使用情况。
这一章节就到这里,谢谢。
-----------------------------------
目录
3 0
- 从头认识java-11.5 扫描输入(1)-简介
- 从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描
- 从头认识java-12.2 Class对象(1)-简介
- 从头认识java-1.5 继承(1)
- 从头认识java-6.2 继承(Generalization)(1)
- 从头认识java-1.8 创建和操纵对象(1)
- 从头认识java-4.7 构造器初始化(1)
- 从头认识java-4.8 数组的初始化(1)
- 从头认识java-6.6 final(1)-属性域
- 从头认识java-10.6 finally(1)-特性
- 从头认识java-11.3 格式化输出(1)
- 从头认识java-11.4 正则表达式(1)-感性认知
- 从头认识java-15.2 Collection的常用方法(1)
- 从头认识java-9.4 List的简介与性能
- 从头认识java-1.5 继承(2)
- 从头认识java-5.2 包(package)
- 从头认识java-6.1 聚合(aggregation)
- 从头认识java-9.8 栈(Stack)
- maven+eclipse使用时环境问题
- 自定义控件其实很简单1/2
- SQL Server 使用FOR XML PATH多行轉一行(包括關聯多個table)
- JSP文件是否有必要放在WEB-INF下
- 无法居中,margin:0 auto;属性
- 从头认识java-11.5 扫描输入(1)-简介
- iOS根据文本长度动态计算label的大小
- 自定义控件其实很简单7/12
- Linux学习笔记(二)系统常用命令和一些概念
- android悬浮窗的实现
- 读txt
- Android Volley完全解析(三),定制自己的Request
- onSaveInstanceState和onRestoreInstanceState触发的时机
- Linux下chkconfig命令详解