2017-02-20 71 views
0

我正在嘗試讀取定向到程序中的輸入文本。掃描儀在讀取input.txt後不會發現行異常

Java Echo < input.txt 

import java.util.Scanner; 

public class Echo { 
    public static void main(String[] args) { 

     // Reads Text File 

     Scanner sc = new Scanner(System.in); 
     while (sc.hasNextLine()){ 
      System.out.println(sc.nextLine()); 
     } 
     // Reads User's Input 
     System.out.println("Keyboard Input: "); 
     if(sc.hasNextLine()){ 
      System.out.println(sc.nextLine()); 
     } 
    } 
} 

雖然輸入將被讀取,sc.nextLine將返回null。 我怎樣才能讓它sc.nextLine()從用戶輸入而不是文件讀取?

結果

$ java Echo < input.txt 
A:Economy:name:W 
Keyboard Input: 

鍵盤輸入不讀,而是僅僅是空白。 如何讓它可以讓用戶在輸入命令行後輸入?

+0

您正在將'std.in'重定向到一個文件。到達目的地後,你預計會發生什麼? –

+1

要從用戶輸入而不是文件讀取,請不要重定向輸入**。將文件名稱作爲參數編程,然後讓程序打開文件。並直接閱讀。 – Andreas

+0

搜索'java如何從文件中讀取' –

回答

0

你在問不可能。輸入已被重定向,它將保持重定向。您必須提供文件名作爲參數併爲其運行不同的Scanner

NB控制nextLine()hasNext()測試也沒有任何意義。它應該是hasNextLine(),就像在你的第一個讀取循環中一樣。

+0

有沒有辦法將輸入重定向到用戶輸入之後? – Bae

+0

我的答案的哪部分你不明白? – EJP

+0

你可以產生一個單獨的線程來做到這一點 – hhafeez