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

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

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

目录

时间: 2024-08-27 20:51:50

从头认识java-11.5 扫描输入(1)-简介的相关文章

JAVA IDE IntelliJ IDEA使用简介(一)—之界面元素

(注:简介基于IDEA的版本为:11.0,下载地址:http://www.jetbrains.com/idea/) 打开IDEA,(当第一次打开的时候出现的是一个欢迎页面,随便创建一个project来进入到IDEA的主界面),主界面显示如下: 主界面由6个主要区域组成(图中红色数字标注的) 1.菜单和工具栏 2.导航条:编辑文件时帮助定位和导航项目中的文件 3.状态栏:显示当前项目,IDEA本身的状态,还有别的一些状态相关的一些信息 4.编辑器 5.工具窗口:辅助类窗口.IDEA提供了各式各样的

[Java]#从头学Java# Java大整数相加

重操旧业,再温Java,写了个大整数相乘先回顾回顾基本知识.算法.效率什么的都没怎么考虑,就纯粹实现功能而已. 先上代码: 1 package com.tacyeh.common; 2 3 public class MyMath { 4 5 public static String BigNumSum(String... n) { 6 int length = n.length; 7 StringBuilder result = new StringBuilder(); 8 //这里判断其实不需

Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码

美国时间 09 月 25 日,Oralce 正式发布了 Java 11,这是据 Java 8 以后支持的首个长期版本. 为什么说是长期版本,看下面的官方发布的支持路线图表. Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码可以看出 Java 8 扩展支持到 2025 年,而 Java 11 扩展支持到 2026 年. 现在大部分都在用 Java 8,Java 9 和 10 目前很少有人在用,至少我没有发现有公司在生产环境应用的,那就是找死. 现在 Java 11 长期支持,也已

【整理】Java 11新特性总结

闲语 2018年9月25日,Java 11正式发布,与JDK 10不同,JDK 11将提供长期支持,还将作为Java平台的参考实现以及标准版(Java SE)11.Oracle直到2023年9月都会为JDK 11提供一级支持,而补丁和安全警告等扩展支持将延续到2026年.新的LTS版本每三年发布一次,JDK 17将于2021年发布,预计将成为下一个LTS版本.临时版本将每六个月发布一次.本文将介绍 Java 11 的新功能以及删除的功能. Java 11 的新功能 JDK 11有16个新功能:

Java 11正式发布,这几个逆天新特性教你写出更牛逼的代码

就在前段时间,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用! 这无疑对我们来说是一大好的消息.作为一名java开发者来说,虽然又要去学习和了解java11,但内心还是欣慰的.我想至少你和我一样的心情:Java在手,天下我有! 今天我们来看一下Java 11到底是什么.他有什么特别的.到底要不要升级到Java 11. Java 11有什么特别的 在Oracle官网中,进入下载页面,第一个可供下载的JDK版本已经提换成了Java SE 11 (LTS),

java 11 标准Java异步HTTP客户端

这是 Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 API. 来看一下 HTTP Client 的用法: var request = HttpRequest.newBuilder() .uri(URI.create("https://javastack.cn")) .GET() .build(); var client = HttpC

java 11 移除的一些其他内容,更简化的编译运行程序,Unicode 10,移除了不太使用的JavaEE模块和CORBA技术,废除Nashorn javascript引擎,不建议使用Pack200 相关api

移除的一些其他内容 移除项 移除了com.sun.awt.AWTUtilities 移除了sun.misc.Unsafe.defineClass, 使用java.lang.invoke.MethodHandles.Lookup.defineClass来替代 移除了Thread.destroy()以及 Thread.stop(Throwable)方法 移除了sun.nio.ch.disableSystemWideOverlappingFileLockCheck.sun.locale.formata

Java 11 究竟比 8 快了多少?

阅读本文大概需要 1.2 分钟. 作者:h4cd 来源:开源中国社区 开源规划调度引擎 OptaPlanner 官网发布了一个 Java 11 GC 性能基准测试报告. 当前使用量最大的 Java 版本是 8,所以测试者用 Java 8 与 Java 11 进行对比测试. GC 是影响 Java 性能的关键因素,所以测试自然也基于 GC,在 G1 GC 和并行 GC 下分别进行了测试,结果如下: Java 8 vs. Java 11 使用 G1 GC G1 GC 下每秒分值: Java 11 在

Java 8后的首个长期支持版本Java 11

Java 11是Java8后的首个长期支持版本.按照 Oracle 公布的支持路线图,Java 11 将会获得 Oracle 提供的长期支持服务,直至2026年9月. 按照官方的说法,新的发布周期会严格遵循时间点,将于每年的3月份和9月份发布.所以 Java 11 的版本号是 18.9(LTS).不过与 Java 9 和 Java 10 这两个被称为“功能性的版本”不同(两者均只提供半年的技术支持),Java 11 不仅提供了长期支持服务,还将作为 Java 平台的参考实现.Oracle 直到2

Java 11 新特性介绍

Java 11 已于 2018 年 9 月 25 日正式发布,之前在Java 10 新特性介绍中介绍过,为了加快的版本迭代.跟进社区反馈,Java 的版本发布周期调整为每六个月一次——即每半年发布一个大版本,每个季度发布一个中间特性版本,并且做出不会跳票的承诺.通过这样的方式,Java 开发团队能够将一些重要特性尽早的合并到 Java Release 版本中,以便快速得到开发者的反馈,避免出现类似 Java 9 发布时的两次延期的情况. 按照官方介绍,新的版本发布周期将会严格按照时间节点,于每年