有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带换行符的java Bash输入重定向

因此,对于学校的作业,我需要用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”中却不行


共 (2) 个答案

  1. # 1 楼答案

    好吧,你可以看到bash是如何不吃新线的

    $ wc -l < input.txt
    

    我想这会给你带来你期望的价值

  2. # 2 楼答案

    你能试着把BufferedInputStream包装在System.in周围吗,因为它可以处理两种情况:\r\n\n;我想这就是你的问题所在

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