在java项目中打开和关闭2个不同的扫描仪

在java项目中打开和关闭2个不同的扫描仪,java,java.util.scanner,Java,Java.util.scanner,这是我正在做的超级简化的代码,但是结果是一样的。我可以在类1中的.close()中进行注释,它将修复错误。但接下来的项目我就剩下一个打开的扫描器了。更改变量名并不是一个解决方案 类别1: package scannerDebug; import java.util.Scanner; public class Class1 { private String name_; public Class1(String name) { name_ = name; } publi

这是我正在做的超级简化的代码,但是结果是一样的。我可以在类1中的.close()中进行注释,它将修复错误。但接下来的项目我就剩下一个打开的扫描器了。更改变量名并不是一个解决方案

类别1:

package scannerDebug;
import java.util.Scanner;

public class Class1 {
    private String name_;

public Class1(String name)  {
    name_ = name;   }

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.print("Your name: ");
    Class1 ex1 = new Class1(in.next());
    System.out.println("eex1" + ex1.name_);
    in.close(); 
    }
}
类别2

package scannerDebug;

import java.util.Scanner;

public class Class2 {
private String name_;

public Class2(String name)  {
    name_ = name;   }

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.print("Your name: ");
    Class2 ex2 = new Class2(in.next());
    System.out.println("ex2" + ex2.name_);
    in.close();
    }
}
驾驶员等级 封装扫描调试

public class driver {

public static void main(String[] args) {
    Class1.main(args);
    Class2.main(args);

}

}

关闭
扫描仪
也会关闭底层流。要解决此问题,只需在
驱动程序
类中使用一个
扫描仪
,并在
Class1
Class2
中使用:

public class driver {
    private static final SCANNER = new Scanner(System.in);

    public static void main(String[] args) {
        Class1.main(args);
        Class2.main(args);
    }

    public static Scanner getScanner() {
        return SCANNER;
    }
}

我建议您遵循适当的约定并更改变量/类名


您也可以通过各自的构造函数将
扫描器
传递给每个类,但我认为您可能希望运行
Class1
Class2
,而不首先运行
driver

通常我的变量名实际上适合该项目,这只是一个简单的示例。我从来不会在真实的东西中使用“Class1”或“ex1”。有没有办法重新打开这条小溪,或者它是那种一旦关闭就关闭的东西?@KileyCampbell明白了,不幸的是,这是后者。
public Class2(String name) {
    name_ = name;
}

public static void main(String[] args) {
    System.out.print("Your name: ");
    Class2 ex2 = new Class2(driver.getScanner().next());
    System.out.println("ex2" + ex2.name_);
}