如何檢查控制檯輸入中是否寫入了內容?如果不是代碼將繼續,但如果我會寫新的事情發生?可能嗎?如何檢查CONSOL輸入中是否寫入了內容?
Scanner k2sk;
k2sk = new Scanner(System.in);
k2sk.nextLine();
但代碼等待,直到我寫的東西
如何檢查控制檯輸入中是否寫入了內容?如果不是代碼將繼續,但如果我會寫新的事情發生?可能嗎?如何檢查CONSOL輸入中是否寫入了內容?
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");
}
}
}
如果你想保持你的線程讀取輸入運行後,我會建議你奉獻一個獨立的線程來讀取異步輸入: How to asynchronously read stdin?
根據您提供的內容,您的程序將在k2sk.nextLine();
處阻止,直到控制檯中出現某些內容。雖然你在技術上正確,但這意味着你的程序,除非多線程,將永遠掛起,或者直到終止。
解決這個問題的方法之一是讓程序成爲多線程,但這可能超出了程序的範圍。
另一種解決方案是嘗試使用實際的控制檯類。 This應該提供一些見解,但只有當您的程序圍繞與用戶進行交互時(例如按順序提示用戶輸入信息),這纔會起作用。
k2sk =新的掃描儀(System.in);和k2sk.nextLine(),但代碼等待,直到我寫東西 – user2610533
@ user2610533添加到問題的主體。 – arshajii
那麼你在問怎樣在不阻礙程序執行的情況下獲得輸入? @ user2610533 –