java Scanner 输入

原创 2016年08月29日 15:49:18


要求,不断的输入一个整数,然后打印这个整数。下面给出代码

public class TestINput {
	public static void main(String[] args) {
		fun1();
		//fun2();
	}
	public static void fun1(){
		Scanner in = new Scanner(System.in);
		while(in.hasNextLine()){
			System.out.println(in.nextInt());
		}
	}
	public static void fun2(){
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			System.out.println(in.nextInt());
		}
	}
}
fun1()和fun2()都能实现这个功能,但是大家有没有发现不同。如果我们不断的输入,然后按ctrl+z结束输入,我们发现fun1()报错,错误如下:

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at com.sunny.company.huaweiqj.TestINput.fun1(TestINput.java:13)
at com.sunny.company.huaweiqj.TestINput.main(TestINput.java:7)

假设我们输入数字 1 然后回车,那么此时输入缓存中为  1\n,注意\n为回车符,由于fun1用

while(in.hasNextLine()){} 来判断输入,那么当<pre name="code" class="html">in.nextInt() 读取了1后,此时缓存中还有\n,那么循环继续,下面就是<pre name="code" class="html">in.nextInt()这个语句,那么你按了ctrl+z,此时已经没有输入,所以会报错。
而fun2()用的是hasNext(),hasNext()判断\n返回的是false,所以fun2()没有报错



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

第一次启动springboot的辛酸历程

第一次集成springboot的心酸历程

Scanner类 Scanner类输入数字,字母,字符串

1.输入字符串 import java.util.Scanner; class Example { public static void main(String[] args){ int i=...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Java笔记(7)-输入、输出流、File类、InputStream、Reader、文件字节流、文件字符流、缓冲流、随机流、数据流、对象流、序列化和对象克隆、Scanner解析文件、Console流

Java笔记(7)-输入、输出流 字节流 字符流 文件字节流 文件字符流 缓冲流 随机流 数组流 数据流 对象流 序列化和对象克隆 文件锁 Scanner解析文件 Console就读取密码 Inp...

JAVA标准输入--SCANNER

java.util.Scanner是Java5的新特征,主要功能是简化文本扫描。这个类最实用的地方表现在获取控制台输入,其他的功能都很鸡肋,尽管Java API文档中列举了大量的API方法,但是都不怎...

从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描

这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。1.scanner的边界上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的...

Java Scanner(读取输入)

Scanner类 Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.。想要通过控制台进行输入,首先需要构造一个Scanner对象,并与“标准输入流”System.in关联。 Sca...

Java中的Scanner类的用法以及其他获取键盘输入的方法

在Java5中新添加的java.util.Scanner类,是一个用于扫描输入文本的应用程序,可以结合使用正则表达式和从输入流中检索特定类型数据项的方法,而除了使用正则表达式,还可以对字符串和基本数据...

JAVA菜鸟入门篇 - 接受键盘输入Scanner、面向对象编程 (八)

1、接受键盘输入:    Scanner类的使用,需要加载 import java.util.Scanner包。     public static void main(String[] args...

JAVA基础类库——使用Scanner获取键盘输入

使用Scanner类可以很方便地获取用户的键盘输入,Scanner是一个基于正则表达式的文本扫描器,它可以从文件、输入流、字符串中解析出基本类型值和字符串值。Scanner类提供了多个构造器,不同的构...

JAVA中使用Scanner连续输入int和String错误的解决方案

在这段代码中,输入成员ID后并添加后,跳转到一下个循环后,没有输入a,b就输出登陆错误,原因是因为nextInt()只读取了int的数值却没有读取到了换行符。 共有两种解决方案: 一、在nextInt...
  • wobnu
  • wobnu
  • 2016-03-30 12:19
  • 1243
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)