从头认识java-11.5 扫描输入(1)-简介

这一章节我们来讨论一下扫描输入。

因为很多时候我们都需要从文本文件里面读取相应的文本,然后进行处理,在输入到其他地方, 这个时候就需要我们下面介绍的扫描输入。

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的一些使用情况。


这一章节就到这里,谢谢。

-----------------------------------

目录



转载于:https://my.oschina.net/u/2325575/blog/543730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值