對於大學任務,從控制檯我需要能夠讀取多行,直到用戶輸入Ctrl + Z。我沒有問題,我的問題在於我無法從System.in中讀取任何內容,因爲它總是拋出NoSuchElementException異常。繼續在Java中的Ctrl + Z之後繼續閱讀控制檯輸入
以下是我用於閱讀多行的代碼,它由教師提供,因此我不想更改它。
System.out.println("To terminate input, type the correct end-of-file indicator ");
System.out.println("when you are prompted to enter input.");
System.out.println("On UNIX/Linux/Mac OS X type <ctrl> d");
System.out.println("On Windows type <ctrl> z");
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
//Processes input
addFileIntoDirectory(input.nextLine());
}
據我所知,這是由Ctrl + Z等同於EOF標記引起的,但我不知道如何移過它。無論我在做多少次讀取之後,無論是否向控制檯輸入了更多內容,我都會立即返回另一個NoSuchElementException。
我已經嘗試過有一個單獨的掃描儀菜單,關閉上面的掃描儀並打開一個新的菜單,但都不起作用。
有沒有辦法刷新/清除System.in或重置它?
請讓我知道,如果你想了解更多的細節。因爲這是作業,所以我保留了程序的其餘部分。
編輯1:作業說「系統提供瞭如下文本選擇菜單,並且 運行循環。」這意味着程序不會在Ctrl + Z上終止。
- 從用戶輸入添加文件
- 顯示整個目錄
- 顯示目錄的大小
- 出口 請給一個選擇[0-4]:
文件結尾是文件結束句點。該流已結束。這是一個外流。不過,我想也許你錯誤地解釋了你的任務。你還沒有寫出完全是什麼。但我在想,如果你應該有一個菜單,然後一系列的輸入,然後回到菜單 - 那麼'eof'應該是**程序**的結尾,而不是結束投入。 – RealSkeptic 2014-11-20 17:42:54
@RealSkeptic這就是我所希望的,但菜單有一個「退出」選項,所以我被引導認爲情況並非如此。 – FreakyDan 2014-11-20 18:18:54
儘管如此,請在您的問題中寫下作業的完整文字和確切文字。如果我們不知道實際需求,那麼解釋有很多種可能性...... – RealSkeptic 2014-11-20 18:20:49