2013-07-31 133 views
2

如何檢查控制檯輸入中是否寫入了內容?如果不是代碼將繼續,但如果我會寫新的事情發生?可能嗎?如何檢查CONSOL輸入中是否寫入了內容?

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

但代碼等待,直到我寫的東西

+0

k2sk =新的掃描儀(System.in);和k2sk.nextLine(),但代碼等待,直到我寫東西 – user2610533

+0

@ user2610533添加到問題的主體。 – arshajii

+0

那麼你在問怎樣在不阻礙程序執行的情況下獲得輸入? @ user2610533 –

回答

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"); 
     } 
    } 
} 
1

根據您提供的內容,您的程序將在k2sk.nextLine();處阻止,直到控制檯中出現某些內容。雖然你在技術上正確,但這意味着你的程序,除非多線程,將永遠掛起,或者直到終止。

解決這個問題的方法之一是讓程序成爲多線程,但這可能超出了程序的範圍。

另一種解決方案是嘗試使用實際的控制檯類。 This應該提供一些見解,但只有當您的程序圍繞與用戶進行交互時(例如按順序提示用戶輸入信息),這纔會起作用。

相關問題