黑马程序员技术交流社区

标题: 关于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