Java 字符串比较错误结果
Java String comparison wrong outcome
我正在尝试根据 EditTexts 是否实际更改来获取 enable/disable 的保存按钮,但我的字符串比较根本不起作用。
public void afterTextChanged(Editable editable) {
String newSet = editable.toString();
newSet = newSet.trim();
if(!newSet.equals(ip) || !newSet.equals(port) || !newSet.equals(username) || !newSet.equals(password)){
saveButton.setEnabled(true);
}else{
saveButton.setEnabled(false);
}
}
它一直告诉我字符串不同,尽管它们并不相同。即使打印出来,我也会得到完全相同的字符串。
谁能帮帮我?
谢谢
newSet
不能等于所有这四个字符串,除非所有 4 个都相等。因此,条件很可能 return 为假。
如果您要求 newSet
等于这 4 个字符串中的任何一个,则正确的条件是:
if(!(newSet.equals(ip) || newSet.equals(port) || newSet.equals(username) || newSet.equals(password)))
可能你想要 &&
而不是 ||
:
public void afterTextChanged(Editable editable) {
String newSet = editable.toString().trim();
saveButton.setEnabled(!newSet.equals(ip) &&
!newSet.equals(port) &&
!newSet.equals(username) &&
!newSet.equals(password));
}
启用saveButton
如果newSet
不是 ip、端口、用户名或密码
你应该这样写,这样更容易阅读:
if (!Arrays.asList(ip, port, username, password).contains(newSet))
{
saveButton.setEnabled(true);
}
else
{
saveButton.setEnabled(false);
}
或:
saveButton.setEnabled(!Arrays.asList(ip, port, username, password).contains(newSet));
将||
替换为&&
if(!newSet.equals(ip) && !newSet.equals(port) && !newSet.equals(username) && !newSet.equals(password))
原因:
OR(||)
如果满足任何条件,它将进入循环。
AND(&&)
如果所有 条件都满足然后才进入循环。
在您的情况下,您需要满足所有条件,这就是使用 and 运算符而不是 or 运算符的原因。
我正在尝试根据 EditTexts 是否实际更改来获取 enable/disable 的保存按钮,但我的字符串比较根本不起作用。
public void afterTextChanged(Editable editable) {
String newSet = editable.toString();
newSet = newSet.trim();
if(!newSet.equals(ip) || !newSet.equals(port) || !newSet.equals(username) || !newSet.equals(password)){
saveButton.setEnabled(true);
}else{
saveButton.setEnabled(false);
}
}
它一直告诉我字符串不同,尽管它们并不相同。即使打印出来,我也会得到完全相同的字符串。
谁能帮帮我?
谢谢
newSet
不能等于所有这四个字符串,除非所有 4 个都相等。因此,条件很可能 return 为假。
如果您要求 newSet
等于这 4 个字符串中的任何一个,则正确的条件是:
if(!(newSet.equals(ip) || newSet.equals(port) || newSet.equals(username) || newSet.equals(password)))
可能你想要 &&
而不是 ||
:
public void afterTextChanged(Editable editable) {
String newSet = editable.toString().trim();
saveButton.setEnabled(!newSet.equals(ip) &&
!newSet.equals(port) &&
!newSet.equals(username) &&
!newSet.equals(password));
}
启用saveButton
如果newSet
不是 ip、端口、用户名或密码
你应该这样写,这样更容易阅读:
if (!Arrays.asList(ip, port, username, password).contains(newSet))
{
saveButton.setEnabled(true);
}
else
{
saveButton.setEnabled(false);
}
或:
saveButton.setEnabled(!Arrays.asList(ip, port, username, password).contains(newSet));
将||
替换为&&
if(!newSet.equals(ip) && !newSet.equals(port) && !newSet.equals(username) && !newSet.equals(password))
原因:
OR(||)
如果满足任何条件,它将进入循环。
AND(&&)
如果所有 条件都满足然后才进入循环。
在您的情况下,您需要满足所有条件,这就是使用 and 运算符而不是 or 运算符的原因。