gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:16:23 24 4
gpt4 key购买 nike

这是我所做的 super 简化代码,但结果是一样的。我可以在第 1 类中注释掉 in.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);

}

}

最佳答案

关闭 Scanner 也会关闭底层流。要解决这个问题,只需在您的 driver 类中使用一个 Scanner 并在 Class1Class2 中使用它:

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;
}
}

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_);
}

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

您也可以通过它们各自的构造函数将 Scanner 传递给每个类,但我认为您可能想要运行 Class1Class2 而不是首先运行 driver

关于java - 在 java 项目中打开和关闭 2 个不同的扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com