2

如何检查控制台输入中是否有内容?如果不是代码会继续,但如果我会写而不是发生新的事情?可能吗?

Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();

但是代码等到我写东西

4

3 回答 3

2

如果您想等待用户输入,同时又不想等待,只需将该职责分配给另一个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");
        }
    }
}
于 2013-07-31T17:02:52.530 回答
1

根据您提供的内容,您的程序将一直阻塞,k2sk.nextLine();直到控制台中出现某些内容。虽然您在技术上是正确的,但这意味着您的程序,除非是多线程的,否则将永远挂起,或者直到终止。

解决这个问题的一种方法是让你的程序多线程,但这可能超出了程序的范围。

另一种解决方案是尝试使用实际的 Console 类。应该提供一些洞察力,但这仅在您的程序围绕与用户交互时才有效,例如按顺序提示用户输入信息。

于 2013-07-31T16:53:47.773 回答
0

如果您想在读取输入后保持线程运行,我建议您专用一个单独的线程来异步读取输入: 如何异步读取标准输入?

于 2013-07-31T16:49:01.177 回答