2015-11-18 105 views
-1

以下是我的代碼。 if和else語句都被執行。有人能幫我解決這個問題嗎?if和else語句都在while循環中執行

Statement st = con.createStatement(); 
String sql = "Select Attribute from attribute"; 
ResultSet rs = st.executeQuery(sql); 
while(rs.next()) { 
    if(Message.contains(rs.getString("Attribute")) || Subject.contains(rs.getString("Attribute")) == true) { 
     response.sendRedirect("User_Send.jsp?auth=1");        
    } else { 
     Statement st2 = con.createStatement(); 
     String query = "insert into Message(Username,REmail,Subject,Message,Date,Status) values('"+ Username +"','" + To + "','" + Subject + "','" + Message + "','" + Date + "','" + "Done" + "')"; 
     int i = st2.executeUpdate(query); 
     if(i!=0) { 
      out.println("<h1 style='text-align:center;color:Red'>Message Sent Successfully</h1>"); 
     }        
    } 
} 
+0

您嘗試調試此問題嗎? – TheLostMind

+0

您是否重新啓動日食? –

+0

是的,我試過了。 – Career

回答

1

無論是if,如果你有一個以上的結果有條件至少一個結果每個子句的else條款將得到執行,。

如果您需要更多幫助,您需要告訴我們發生了什麼,而不是您認爲發生的結果。

+0

我需要檢查文本是否包含數據庫中的字符串。如果它包含字符串,那麼它將被重定向,如上所示。如果不是這些值應該插入到數據庫中。但問題在於if和else子句都被執行了。 – Career

+0

就在你的'if'語句之前做一個'println()'來輸出'rs.getString()'的值。你會發現'println()'執行多次,至少一次會滿足'if'條件,至少一次不會。當你處理它時,打印出代碼將該值與之進行比較的屬性值。 – arcy

+0

我會試一試..謝謝 – Career

0
  • 在外部聲明布爾標誌。
  • 設置爲true的,如果
  • 檢查標誌
  • 如果一段時間後其真正然後重定向。
+0

你能告訴我該怎麼做嗎? – Career

0

那是因爲在某些迭代中,if語句爲true,而其他時間則爲false,並轉到else語句。它不能同時存在。

我強烈建議您對此進行調試,並且如果您現在不知道如何調試,請立即開始調試,因爲如果您無法調試,則無法成爲優秀的程序員。