2017-10-15 18 views
1

所以我在Linux機器上使用Java和我目前正在嘗試從標準輸入讀取,讓我當運行「的Java模擬多〜測試/ locationOfInput /測試「它需要一串數字並計算值並打印出來。然而,當我嘗試讀取值時,我的代碼被鎖定,我檢查了空文件,所以我知道它至少接收了文件。我目前有這個代碼讀取stdin到一個數組中無法得到標準輸入讀入Linux上的陣列 - Java的

Scanner input = new Scanner(System.in); 
    ArrayList<Integer> values = new ArrayList<Integer>(); 

    while (input.hasNextInt()) { 
     int i = input.nextInt(); 
     values.add(i); 
    } 

循環似乎無限運行,我不知道爲什麼。我誤解了如何從STDIN讀入?

+0

你有什麼停靠你'while'環... – Al1

+0

如果你輸入你想添加的最後一個整數後,「請停止,我不能這樣繼續下去了」輸入線路上,會發生什麼?順便說一句,使用'ArrayList'! –

+1

@ Al1上沒有整數就會停止循環。 –

回答

0

您需要使用cat ~test/locationOfInput/test | java Simulation到輸出重定向正確。

+0

這個伎倆,謝謝!有沒有什麼辦法,我跑這一點,但在某種程度上它可以作爲輸入類似./Simulation貓〜測試/ locationOfInput /測試 – mewi

+0

@mewi爲什麼相同呢?你可以用'java的仿真<〜測試/ locationOfInput/test'我想,但你可能最好關閉執行接受命令行參數jrtapsell建議。 – daniu

0

你有2種選擇:

  1. 管道輸入到作爲@daniu建議
  2. 以文件路徑作爲參數,並與給定的路徑

從文件中讀取程序你可以在1個程序中實現這兩個程序,所以如果它有一個從該文件讀取的參數,否則它將從管道輸入中讀取。