Java 如何在睡眠期间关闭扫描仪?

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

由于扫描仪仍处于打开状态,用户可以在暂停期间键入。它不会使程序崩溃,但我仍然希望能够关闭扫描仪,并在以后的代码中重新打开它

从Java 7开始,
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);