こんにちは私は最初のJavaアプリを書いていますが、このスクリプトを介してアプリに送信したいテストケース(* .tcファイル)がいくつかあります。
for f in `ls *.tc`; do
echo "Current Testcase: $f"
x=${f%.*}
java Main < $x.tc > $x.out
if diff "$x.out" "$x.should"; then
echo "passed testcase $f"
let PASSED=PASSED+1
else
echo "failed testcase $f"
let FAILED=FAILED+1
fi
done
tc file
問題は、が複数の行を含むとすぐにアプリがおかしくなる理由を完全に理解できないことです。例:quit.tc
含む
quit
手動で「quit」と入力したときと同じように機能するため、テストケースは合格です。しかし、私が別のtcを書くときquit2.tc
:
lala
test
quit
アプリは最初のコマンドの後で終了します(readString関数は後でnullを返すように見えるため)。読み取りを担当する関数は次のとおりです。
public String readString(){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String answer = null;
try {
answer = br.readLine();
return answer;
}
catch(IOException ioe) {
System.out.println("IO Error");
}
return answer;
}
アプリにリダイレクトしたときにこの関数がnullを返す理由や時期がわかりませんが、これが問題のようです。tcスクリプトを機能させるために手伝ってもらえますか?どうも