2017-02-20 53 views
0

Я пытаюсь прочитать текст ввода, который направлен в программу как таковой.Scanner throws no Линейное исключение после чтения ввода.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