我正在编写一些代码来测试字符串中是否有“xx”。例如,doubleX(“aaxxbb”)应该返回true,而doubleX(“axabb”)应该返回false。
这是我的代码:
private static boolean doubleX(String str) {
for(int i=0;i<str.length()-1;i++){
System.out.println(str.substring(i,i+2));
if(str.substring(i,i+2) == "xx") return true;
}
return false;
}
为什么doubleX(“aaxxbb”)返回false?
答案 0 :(得分:2)
您必须使用.equals
代替==
。有关详细信息,请按照复制邮件进行操作。
return str.contains("xx");
虽然更清楚。
答案 1 :(得分:1)
你应该理解==和equals之间的区别:第一个比较参考,第二个比较实际值。
您的代码效率非常低。
我会尝试这样的事情:
private static boolean doubleX(String str) {
return (str.indexOf("xx") != -1);
}
答案 2 :(得分:0)
使用equals()
检查字符串的内容而不是==
。 ==
检查引用相等性。
private static boolean doubleX(String str) {
for(int i=0;i<str.length()-1;i++){
System.out.println(str.substring(i,i+2));
if(str.substring(i,i+2).equals("xx")) return true;
}
return false;
}
即使你可以直接编码如下:
private static boolean doubleX(String str) {
return str.contains("xx");
}