在java项目中打开和关闭2个不同的扫描仪
这是我正在做的超级简化的代码,但是结果是一样的。我可以在类1中的.close()中进行注释,它将修复错误。但接下来的项目我就剩下一个打开的扫描器了。更改变量名并不是一个解决方案 类别1:在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
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_);
}