如何检查控制台输入中是否有内容?如果不是代码会继续,但如果我会写而不是发生新的事情?可能吗?
Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();
但是代码等到我写东西
如何检查控制台输入中是否有内容?如果不是代码会继续,但如果我会写而不是发生新的事情?可能吗?
Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();
但是代码等到我写东西
如果您想等待用户输入,同时又不想等待,只需将该职责分配给另一个Thread
.
这里我做了一个简短的例子,希望对你有用:
import java.util.Scanner;
public class TestInput {
public static void main(String[] aa)
{
new Thread(new T1()).start();
System.out.println("MOVED FURTHER");
}
public static class T1 implements Runnable
{
public void run() {
Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();
System.out.println("DONE");
}
}
}
根据您提供的内容,您的程序将一直阻塞,k2sk.nextLine();
直到控制台中出现某些内容。虽然您在技术上是正确的,但这意味着您的程序,除非是多线程的,否则将永远挂起,或者直到终止。
解决这个问题的一种方法是让你的程序多线程,但这可能超出了程序的范围。
另一种解决方案是尝试使用实际的 Console 类。这应该提供一些洞察力,但这仅在您的程序围绕与用户交互时才有效,例如按顺序提示用户输入信息。
如果您想在读取输入后保持线程运行,我建议您专用一个单独的线程来异步读取输入: 如何异步读取标准输入?