我有这段代码:
if(!((s.substring(s.length() - 1)).equals(";"))){
s = s + ";";
}
此代码应检查字符串的最后一个字符是否为“;”并且如果不是这样的话,应该添加一个分号,只有它正好相反,如果字符串已经以一个结尾,它会添加一个分号。如果我拿出感叹号,我的代码就可以了。怎么可能,我读了文档,如果两个表达式相等,.equals()应该返回true。我错过了什么吗?感谢
答案 0 :(得分:1)
如果将这些语句拆分为单独的行,则这样的语句更容易调试。然后你可以使用Eclipse或其他IDE中的调试器,或者对于旧学校调试,你可以在每行记录或打印语句以显示哪些变量是或不是
int len = s.length();
// Log or print value of `len`
String sub = s.substring(len - 1);
// Log or print value of `sub`
boolean endsSemiColon = sub.equals(";");
// Log or print value of `endsSemiColon`
if(!endsSemiColon) {
s = s + ";";
}
PS:
s.endsWith(";")
s = s.concat(";")
比s = s + ";"
答案 1 :(得分:1)
if(!s.endsWith(";")){
s = s + ";";
}
或
if(s.charAt(s.length()-1) != ';'){
s = s + ";";
}