[JSP ] readline時會停住的問題…

看板java作者 (下雨天)時間13年前 (2011/07/17 15:45), 編輯推噓0(007)
留言7則, 2人參與, 最新討論串1/2 (看更多)
<% if(solStateNum == 0){ String WA_check[] = {"cmd","/c","D:\\"+solNumber[1]+".exe"}; try{ Process pro = runtime.exec(WA_check); BufferedWriter WA_In = new BufferedWriter( new OutputStreamWriter(pro.getOutputStream())); BufferedReader WA_Out = new BufferedReader( new InputStreamReader(pro.getInputStream())); FileWriter errorWriter = new FileWriter( "D:\\"+solNumber[1]+".txt",true); %> <sql:query var="test"> Select * From test_point Where qNum = ? <sql:param value="${param.qNum}"/> </sql:query> <c:forEach var="test" items="${test.rows}"> <c:set var="input" scope="request" value="${test.testInput}"/> <c:set var="output" scope="request" value="${test.testOutput}"/> <% String input = (String)request.getAttribute("input"); String output = (String)request.getAttribute("output"); WA_In.write(input); WA_In.flush(); if((line = WA_Out.readLine()) != null){ if(!line.equals(output)){ //輸出資料比對 errorWriter.write("Your answer is : "+line); errorWriter.write("The correct answer is : " +output); solStateNum = 3; } } %> </c:forEach> <% errorWriter.close(); WA_In.close(); WA_Out.close(); pro.destroy(); } catch (Exception e) { e.printStackTrace(); runtime.exit(0); } } %> 這是我的部份程式 目的是要做由gcc編譯完後得到的exe檔,開啟並輸入值, 然後再比對輸出是否和正確答案一樣 編譯的c程式如下 #include<stdio.h> int main() { char s[9999]; while( scanf("%s",s)!=EOF ) { printf("hello, %s\n",s); } return 0; } 我是用if(true)return;的方式得知在readline時停住了(就是網頁跑很久都沒有結果) 卻一直不明白為何… -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.125.57.131

07/19 15:19, , 1F
我猜你的input不存在CR/LF,你可以印每個byte出來看看
07/19 15:19, 1F

07/19 15:21, , 2F
你可以看看最後有沒有0D或是0A這兩個byte
07/19 15:21, 2F

07/20 10:48, , 3F
我用getbytes("UTF-8")得到 [B@1e3a0ec 這值次出來都不一
07/20 10:48, 3F

07/20 10:52, , 4F
之前也試過WA_in(input+"\r\n")但是結果是一樣的 = =
07/20 10:52, 4F

07/20 14:31, , 5F
那就不要用readLine,看你來是最後沒有od和oa所以卡住了
07/20 14:31, 5F

07/20 14:32, , 6F
打錯,是0d或0a
07/20 14:32, 6F

07/20 17:46, , 7F
不好意思,那請問可以用什麼代替?
07/20 17:46, 7F
文章代碼(AID): #1E8fCtHc (java)
文章代碼(AID): #1E8fCtHc (java)