Scaner类在使用的时候为什么调用close会有问题

gaoliang19880714 2015-03-09 07:16:52

package com.hw.test;

import java.util.Scanner;

public class TestDemo01 {

/**
* @param args
*/
public static void main(String[] args) {
System.out.println("请输入内容");
while(true)
{
Scanner scan = new Scanner(System.in);
if(scan.hasNextInt())
{
int x = scan.nextInt();
System.out.println(x);
}
else
{
System.out.println("请再次输入");
}
// scan.close();
}

}
}



以上的代码当前可以正常执行,当我输入非整数的时候会让我重新输入,但是我现在将注释的close方法取消注释。发现不会再接收用户的输入,请问下论坛的朋友,是什么原因啊?不明白
...全文
195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengzhidalu 2015-03-09
  • 打赏
  • 举报
回复
System.out.println("请输入内容");
		Scanner scan = null;
		while (true) {
			scan = new Scanner(System.in);
			if (scan.hasNextInt()) {
				int x = scan.nextInt();
				System.out.println(x);
				break;
			} else {
				System.out.println("请再次输入");
			}
		}
		scan.close();
因为生成Scanner的使用你用的都是System.in这个流,关闭后就不能再使用了 而这个时候scan对象的值都是固定的了
Scanner scan1 = new Scanner(System.in);
		Scanner scan2 = new Scanner(System.in);
		scan1.close();
		int a=scan2.nextInt();
这样的代码scan1关闭 再去使用scan2会报错

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧