读取input.txt后,扫描程序不会抛出Line found异常

时间:2017-02-20 23:33:56

标签: java java.util.scanner

我正在尝试读取一个指向程序的输入文本。

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:

未读取键盘输入,而是仅为空白。 我怎样才能使用户可以在命令行之后输入输入?

1 个答案:

答案 0 :(得分:0)

你问不可能的事。输入已被重定向,它将保持重定向。您必须提供文件名作为参数,并为其运行不同的Scanner

NB nextLine()hasNext()进行测试无法控制hasNextLine()也没有意义。它应该是const char* hello="hello";,就像你的第一个阅读循环一样。