簡體   English   中英

掃描儀比打印快?

[英]Scanner faster than print?

我遇到了一個奇怪的問題。

到目前為止,我的代碼如下所示:

String value = "";
Scanner scanner = new Scanner(System.in);

System.out.print("String 1");
System.out.println("String 2");
value = scanner.nextLine();

當我看到這個時,我希望程序打印以下內容

String 1String 2

之后它應該等我輸入一些東西。

但是當我運行代碼時,它會說:

Exception in thread "main" String 1String2
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)

然后它告訴我發生錯誤的行。

所以對我來說,掃描儀似乎在打印字符串之前嘗試掃描某些東西。 為什么會這樣?

發生排序問題是因為字符串被寫入標准輸出,而異常(由於您的環境不允許鍵盤輸入)被寫入標准錯誤。

雖然首先寫入字符串,但兩條數據最終進入兩個不同的隊列(可能是 pipe 緩沖區),它們之間沒有固有的順序。 然后顯示的順序取決於環境如何/何時從兩個隊列中讀取 output 並將它們合並以進行顯示。

如果您想要可預測的排序,則必須將兩者寫入相同的底層 stream,因為單個 stream 中的內容是有序的。

You can do that from the Java side by writing the strings to stderr (eg System.err.println instead), or from the environment side by ensuring that stdout and stderr point to the same stream (eg shell java SomeProgram 2>&1 )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM