黑马程序员技术交流社区
标题:
关于Scanner 对象sc 调用方法.close()
[打印本页]
作者:
luomolight
时间:
2015-4-9 23:56
标题:
关于Scanner 对象sc 调用方法.close()
/*
* 这一个学生信息管理程序
* 包含基础的增加,删除,修改,查询功能
*
* */
//用户界面模块
package com.useinterface;
import java.util.Scanner;
import com.funcation.Funcation;;
public class UI {
public static void main(String [] args){
System.out.println("******欢迎使用学生信息管理系统*******");
Scanner sc = new Scanner(System.in);
for (int count = 1 ;true; count++){
System.out.println("请输入用户名和密码格式为: 用户名-密码");
String user_passwd = sc.nextLine();
if (user_passwd.equals("root-root")){
break;
}
else if(count == 5){
System.out.println("第"+count+"输入错误,程序结束");
return;
}
else{
System.out.println("第"+count+"输入错误");
}
}
sc.close();
Funcation f = new Funcation();
f.funcation();
}
}
作者:
luomolight
时间:
2015-4-9 23:58
我在Funcation 类中再次创建了Scanner sc1 的对象。当程序执行f.funcation();就会报错
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at com.funcation.Funcation.funcation(Funcation.java:17)
at com.useinterface.UI.main(UI.java:31)
作者:
luomolight
时间:
2015-4-10 00:00
可是程序中不用.close();就不会报错,为啥关闭就会报错呢?有人遇到过差不多的问题吗
作者:
lrd7512369
时间:
2015-4-10 09:12
你的Scanner对象是在循环外创建的,每次循环都要用这个对象调用方法,但是你在每次循环的结尾就把他close了,其实一般不建议关闭Scanner
作者:
luomolight
时间:
2015-4-11 22:31
lrd7512369 发表于 2015-4-10 09:12
你的Scanner对象是在循环外创建的,每次循环都要用这个对象调用方法,但是你在每次循环的结尾就把他close了 ...
只是不关闭就会有警告,现在我换了JDK就不报警了,看来JVM已经能够自行关闭输入流了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2