Java 如何在睡眠期间关闭扫描仪?
由于扫描仪仍处于打开状态,用户可以在暂停期间键入。它不会使程序崩溃,但我仍然希望能够关闭扫描仪,并在以后的代码中重新打开它 从Java 7开始,Java 如何在睡眠期间关闭扫描仪?,java,java.util.scanner,sleep,Java,Java.util.scanner,Sleep,由于扫描仪仍处于打开状态,用户可以在暂停期间键入。它不会使程序崩溃,但我仍然希望能够关闭扫描仪,并在以后的代码中重新打开它 从Java 7开始,Scanner实现了AutoCloseable,因此您可以使用try with resources自动关闭它: import java.util.Scanner; import java.util.concurrent.TimeUnit; public class Lab1 { public static void main(String ar
Scanner
实现了AutoCloseable
,因此您可以使用try with resources自动关闭它:
import java.util.Scanner;
import java.util.concurrent.TimeUnit;
public class Lab1 {
public static void main(String args[])
throws InterruptedException {
System.out.println("Please enter your first name.");
String name;
Scanner sc = new Scanner(System.in);
name = sc.nextLine();
System.out.println(name);
Thread.sleep(1200);
}
}
尝试:
sc.close()
。还有,“因为扫描仪仍处于打开状态,用户可以在暂停期间键入”是什么意思?您想在睡眠后关闭并再次使用扫描仪吗?像Thread.sleep(1200);sc.close();sc.nextLine()
我理解正确了吗?你不能。即使是本地程序也无法阻止这种情况;例如,如果在Unix/Linux中执行cat verylongfile.txt
,则可以在命令打印时键入,键入的字符将显示在程序输出中。如果您想要更多的控制,请使用JavaFX或Swing创建一个图形用户界面,而不是依赖于控制台。您可以使用类似jcurses的工具来实现这一点,但如果您这样做的话,您正在编写一个TUI(文本用户界面)。然后如何处理,以便以后能够重新打开它?
String name;
try (Scanner in = new Scanner(System.in)) {
name = in.nextLine();
}
System.out.println(name);