我有以下代码但我无法检测为什么没有输出 当我调试它时,控制流永远不会进入循环但我无法弄清楚为什么
有什么人可以帮帮我吗? 这是我的代码public class DealWithStrings {
ArrayList<String> container = new ArrayList<>();
public void printDuplicate() {
String string = "aaabed";
String[] res = string.split("");
for (int i = 1; i < string.length(); i++) {
if (res[i] == res[i - 1]) {
container.add(res[i]);
}
}
for (String s : container) {
System.out.println(s);
}
}
public static void main(String[] args) {
DealWithStrings d = new DealWithStrings();
d.printDuplicate();
}
}
答案 0 :(得分:3)
使用.equals
比较字符串,而不是==
而不是
if(res[i]==res[i-1])
使用
if(res[i].equals(res[i-1]))
如果对象相同, ==
将评估为true,在这种情况下它们永远不会。 .equals
将检查字符串的内容(实际文本)是否相同。
答案 1 :(得分:1)
用'.equals()'方法替换代码'=='运算符,因为, '=='等于运算符比较内存中两个字符的引用,而您需要检查该引用处的'内容'。
重写.equals方法以检查字符串的内容。
for (int i = 1; i < string.length(); i++) {
if (res[i].equals(res[i - 1])) {
container.add(res[i]);
}
}