簡體   English   中英

equals()無法按預期工作

[英]equals() not working as expected

我正在嘗試比較兩個發布數據字段,以查看它們是否相同。 如果它們不同,我將保存信息。 但是我似乎無法使equals()正常工作。 這是一個示例:

String oldDesc1 = request.getParameter("desc1_old");
String oldDesc2 = request.getParameter("desc2_old");
String desc1 = request.getParameter("desc1");
String desc2 = request.getParameter("desc2");

if (!oldDesc1.equals(desc1) || !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}
//added for testing
out.println("Old Desc 1: "+oldDesc1);
out.println("New Desc 1: "+desc1);
out.println("Old Desc 2: "+oldDesc2);
out.println("New Desc 2: "+desc2);

現在我的Servlets輸出看起來像這樣:

Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2

注意它是如何丟失“成功!”的!

===編輯====

我的目標是檢查desc1是否更改,desc2是否更改或兩者都更改以寫入新信息。 給定我看到的答案,您的意思是說如果desc1和desc2更改,然后保存信息。 抱歉,如果我之前沒有足夠清楚地說明自己!

您應該參考德摩根定律

(not a) OR (not b)  ⟷  not (a AND b)

將此規則應用於您的條件,將等同於:

if (!(oldDesc1.equals(desc1) && oldDesc2.equals(desc2)))

這不是您想要的,使用&&代替||

if (!oldDesc1.equals(desc1) || !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}

您正在使用|| (OR)代替&& (AND)運算符。

修改后的代碼:

if (!oldDesc1.equals(desc1) && !oldDesc2.equals(desc2)) {
    out.println("made it!!");
    part.setDescription(new String[] {desc1, desc2});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM