A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
* 这一个学生信息管理程序
* 包含基础的增加,删除,修改,查询功能
*
* */
//用户界面模块
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();
        }

}


4 个回复

倒序浏览
我在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)
回复 使用道具 举报
可是程序中不用.close();就不会报错,为啥关闭就会报错呢?有人遇到过差不多的问题吗
回复 使用道具 举报
你的Scanner对象是在循环外创建的,每次循环都要用这个对象调用方法,但是你在每次循环的结尾就把他close了,其实一般不建议关闭Scanner
回复 使用道具 举报
lrd7512369 发表于 2015-4-10 09:12
你的Scanner对象是在循环外创建的,每次循环都要用这个对象调用方法,但是你在每次循环的结尾就把他close了 ...

只是不关闭就会有警告,现在我换了JDK就不报警了,看来JVM已经能够自行关闭输入流了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马