为什么扫描仪不会提示我输入?

Mag*_*nus 1 java console loops java.util.scanner

我有这个方法:

public String scanInput()
{
    String input = "";
    Scanner skanner = new Scanner(System.in);
    while(skanner.hasNextLine()){
        input = skanner.nextLine();
    }
    skanner.close();
    return input;
}
Run Code Online (Sandbox Code Playgroud)

第一次运行此方法时,程序停止,并且在进行操作之前,系统会提示我在控制台中输入一个输入.但是,第二次运行该方法时,它会在没有暂停的情况下闪烁,并且我的程序陷入无限循环.

此方法中的哪一行使程序暂停,为什么它只在第一次暂停?

Jon*_*eet 7

您正在接近方法结束时关闭扫描仪.这关闭了它正在处理的流 - System.in在这种情况下.这意味着下次调用方法时,流仍然关闭,因此没有行.

您应该设置一个 Scanner,并将其传递给方法(或在类中将其作为状态).