1

因此,对于学校的作业,我需要用 Java 编写一个程序来管理大学里的一些学生,用户可能会调用一些函数,但我从测试“添加”开始。

我的教授建议我使用输入重定向,因为我可以轻松地反复测试程序,而无需输入太多内容。现在问题来了。

echo `< input.txt`
add Student Name 123 Street,City,Province,Postal Code q
#Input rediraction ate my newlines
cat input.txt
add
Student Name
Street,City,Province,Postal Code
q
#What I actually want to run
java -cp . TestCollege < input.txt #fail horribly

如您所见,bash 删除了我用来分隔输入的换行符,因此我的程序崩溃了,因为当您在交互模式下运行它时,Scanner.getLine() 只会阻塞,直到输入发生。

知道如何用换行符给我的程序输入,它似乎在 Windows“cmd”中运行良好,但在“bash”中运行良好。

4

2 回答 2

1

你可以尝试环绕BufferedInputStreamSystem.in因为它可以处理这两种情况: \r\n\n; 我认为这就是你的问题所在。

或者更确切地说,调用useDelimiter(System.getProperty("line.separator")).Scanner

于 2012-09-28T22:24:59.127 回答
1

好吧,你可以看到 bash 如何不吃掉正在运行的换行符

$ wc -l < input.txt

我想这会给你你所期望的价值。

于 2012-09-28T23:05:21.640 回答