我有这种方法:

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


第一次运行此方法时,程序将停止,并提示我在控制台中进行输入,然后才能继续进行。但是,第二次运行该方法时,它闪烁而没有暂停,并且我的程序陷入了无限循环。

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

最佳答案

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

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

10-01 05:48