2012-02-19 54 views
1

我在Windows 7上编写Java,并希望能够使用键盘的输入,我只能假设它是标准输入。从键盘获取输入而不暂停程序

我试过使用BufferedInputSystem.inScanner,但它们都需要程序暂停并等待行结束或返回!无论如何只是收集和记录数据,因为它使用,而不必等待回报?

+2

您可以创建一个新线程,并在此新线程中请求输入,同时在主线程中执行其他操作。 – florian 2012-02-19 11:44:25

+0

*“不必等待返回*我(作为用户)在我很好并准备好应用程序时点击'返回'对数据做些什么事情以前,应用程序做什么用途那个时候?你想要提供什么样的应用程序功能? – 2012-02-19 11:59:41

+0

我想我只是理解你说的问题安德鲁。我不认为你可以在控制台上做你想做的事 – florian 2012-02-19 12:15:20

回答

1

这里是一个快速的解决方案:

public static void main(String[] args) { 

    Thread inputThread = new Thread(new Runnable() { 
     @Override 
     public void run() { 

      Scanner scan = new Scanner(System.in); 
      String input = ""; 
      while (true) { 
       System.out.println("Type something: "); 
       input = scan.nextLine(); 
       System.out.println("Input: "+input); 
      } 
     } 
    }); 

    inputThread.start(); 

    while (true) { 

     System.out.println(""); 
     System.out.println("test"); 

     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

主线程打印 “测试” 每一秒。 inputThread要求用户键入内容然后打印他写的内容。这只是一种“可视化”解决方案,当然用户打字时你肯定不想打印某些东西。