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

さて、あなたはbashが実行中の改行をどのように食べないかを見ることができます

$ wc -l < input.txt

私はあなたが期待する価値をあなたに与えると思います。

于 2012-09-28T23:05:21.640 に答える
1

と;の両方のケースを処理できるため、 を ラップBufferedInputStreamしてみてください。それがあなたの問題があるところだと思います。System.in\r\n\n

というか、電話useDelimiter(System.getProperty("line.separator"))してScannerください。

于 2012-09-28T22:24:59.127 に答える