欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java中多个类使用同一个Scanner(System.in)对象

程序员文章站 2022-06-02 15:46:38
...

问题描述:在一个java文件中的多个类都要使用Scanner对象,于是我多次创建Scanner对象并多次关闭。出现以下错误:
java中多个类使用同一个Scanner(System.in)对象
问题起因:经网上搜索后得知:sc.close()一旦调用则就算再次创建Scanner(System.in)对象也无法继续输入,所以要慎用close()方法。但多次查找后并未找到我想要的解决办法,故写此博客以作记录。

解决方案:在本文件的public类中(意即整个程序的入口)创建Scanner对象(需加上public static修饰),并在main方法中调用close()方法关闭输入流。然后在其他类中需要输入时使用:主类名.sc.next() 即可。代码示例如下:
创建及关闭:

public class FileManager 
{
   == public static Scanner sc = new Scanner(System.in);==
    public static void main(final String[] args) throws Exception {
        final MainMenu mainmenu = new MainMenu();
        mainmenu.StartMenu();
       == sc.close();==
    }
}

其他类的使用:

class EnterDirectory {
    EnterDirectory() throws IOException {
        System.out.println("Input the directory that you want to enter: ");
        ==String dir = FileManager.sc.next();==
        Runtime.getRuntime().exec("explorer.exe" + dir);
    }
}
相关标签: java