equals() 没有按预期工作
equals() not working as expected
我正在尝试比较两个 post 数据字段以查看它们是否相同。如果它们不同,我将保存信息。但是我似乎无法让 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);
现在我的 Servlet 输出如下所示:
Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2
注意它是如何缺少 "made it!!"
===编辑====
我的目标是检查 desc1 是否更改、desc2 是否更改或两者都更改以写入新信息。鉴于我看到的答案,您的陈述是说如果 desc1 和 desc2 更改然后保存信息。如果我之前没有足够清楚地解释自己,我很抱歉!
你应该参考De morgan's laws:
(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});
}
我正在尝试比较两个 post 数据字段以查看它们是否相同。如果它们不同,我将保存信息。但是我似乎无法让 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);
现在我的 Servlet 输出如下所示:
Old Desc1: foo1
New Desc1: bar1
Old Desc2: foo2
New Desc2: bar2
注意它是如何缺少 "made it!!"
===编辑====
我的目标是检查 desc1 是否更改、desc2 是否更改或两者都更改以写入新信息。鉴于我看到的答案,您的陈述是说如果 desc1 和 desc2 更改然后保存信息。如果我之前没有足够清楚地解释自己,我很抱歉!
你应该参考De morgan's laws:
(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});
}