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()没有报错



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

相关文章推荐

java 中的Scanner(非常详细不看后悔)

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

java初学 Scanner 中 输入数字和字符串的方法

输入书之后再输入字符串怎么办 package com.heima.scanner; import java.util.Scanner; /** * 2016-8-20 23:00:05 * ...

java中Scanner类nextInt之后用nextLine无法读取输入

学习Scanner类时遇到的一些小问题及解决方法

java 控制台scanner的中文输入问题

这个问题折腾了很久,也不知道对不对,希望有看到的前辈帮忙指正…… 今天在写练习敲代码时,遇到了之前都没有注意到的一个问题,在控制台输入的时候无法输入自己想要的中文内容; 最后经反复测试,发现:有...

java中类型的输入(Scanner)

Scanner input =new Scanner(System.in);

Java 输入流 Scanner 的用法

最近在赛马网上做练习,发现很多编程题都有输入的要求。而之前在 Leetcode 上刷题并没有这个碰到这个情况。因此,特地了解了Java输入流Scanner的用法。以下是比较常用的方法: import ...
  • BIN_GOO
  • BIN_GOO
  • 2017年03月31日 20:40
  • 306

I学霸官方免费教程二十二:Java常用类之接收控制台输入 Scanner类

Scanner类(了解即可) 使用Scanner类接收键盘的输入 1、创建Scanner对象的语法:Scanner scan = new Scanner(System.in); 2、使用Scan...
  • ixueba
  • ixueba
  • 2015年08月11日 18:45
  • 203

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

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

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

在这段代码中,输入成员ID后并添加后,跳转到一下个循环后,没有输入a,b就输出登陆错误,原因是因为nextInt()只读取了int的数值却没有读取到了换行符。 共有两种解决方案: 一、在nextInt...
  • wobnu
  • wobnu
  • 2016年03月30日 12:19
  • 1574

java Scanner与BufferedReader读取键盘输入性能比较

java  Scanner与BufferedReader读取键盘输入性能比较       在java中常见的从键盘获取输入的方式有Scanner和BufferedReader,本文给出两种方式读取输入...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java Scanner 输入
举报原因:
原因补充:

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