因此,对于在学校的任务,我需要在java中创建一个管理大学学生的程序,用户可以调用一些函数,但我开始测试'add'。
我的教授建议我使用输入重定向,因为我可以轻松地反复测试程序,而无需打字。现在问题就在于此。
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”中却没有。
答案 0 :(得分:1)
您可以尝试在BufferedInputStream
周围包裹System.in
,因为它可以处理两种情况:\r\n
和\n
;而且我认为这就是你的问题所在。
或者更确切地说,在useDelimiter(System.getProperty("line.separator"))
上致电Scanner
。
答案 1 :(得分:1)
好吧,你可以看到bash如何不吃新行“
$ wc -l < input.txt
我想这会给你你期望的价值。