当我将System.in重定向到Eclipse中的文件时,如何确定我使用Java读取了所有行,而仅读取了所有行?

时间:2019-04-08 21:22:09

标签: java eclipse ide

我有一种家庭作业,需要做一个模拟器,该模拟器通过System.in读取行,并模拟自动机的过渡并将其打印在System.out上。

这是通过Web服务分级的,所以我的代码必须在完全任意的情况下都可以工作,我想它会将System.in重定向到自己的文件,并将自己的输出与我的输出进行比较。为了模拟这一点,我只是用自己的测试来完成,将它们重定向到我自己的文件中。

输入被分成具有各自含义的行,而后者则收集转换。对于可以进行多少次转换没有限制。

经过数小时的调试和与教授及助手的咨询,我得出的结论是,程序的唯一错误部分是我收集转换的循环。 该程序认为用户正在输入所有这些转换,但是我只是不知道如何让该程序知道输入已结束,因为它实际上是从文件中读取的。

在此问题上分配的指定不够。我们不能制作自己的“ EOF”符号。我认为应该将其视为具有多行的单个输入,因此这是有限的。

我以前尝试过使用Scanner,它始终在hasNextLine()上阻塞。现在,我正在接受我的一些同事和助手的建议,并使用BufferedReader,但无济于事。我当前的代码是用BufferedReader编写的。
我目前正在测试更多选项,因此如果可行,我会及时通知您。

这是杀死我程序的循环:

while(((line=br.readLine())!=null&&(line.length()!= 0))||(line.equals((String) ("%n")))) { 
       if (line.isEmpty()) break;
       prijelazi.add(line);
}

变量:line是一个字符串,prijelazi是一个LinkedList,br是一个BufferedReader。

预期:如果下面没有空行,则预期可以使用所有格式,并且不会冻结。

实际上:如果我在文件的最后一次转换之后两次按ENTER键两次以上,则我的程序可以工作。如果少于,则没有。我的代码通过了该服务的集成测试。

0 个答案:

没有答案