无法尝试在Java中跳过while循环的迭代

时间:2014-10-31 05:47:25

标签: java loops skip

我是Java的新手(以及一般的编程)。我有一个程序应该在两个变量字符串上运行一个方法,但只有当字符串长度相同且不相同时。

我尝试过使用

while(i < n){
    if (string1.length() == string2.length() && string1 != string2){
        compare(string1, string2);
        i++
    }
}

但即使字符串相同,它仍会运行 compare 方法。

我也尝试过使用

while(i < n){
    if (string1.length() == string2.length(){
        if (string1 == string2){
            continue;
        }
        compare(string1, string2);
    }
    i++
}

但无论字符串是否相同,这仍然会运行 compare 方法。

我的格式设置是否存在问题,或者可能是误用的关键字?谢谢!

3 个答案:

答案 0 :(得分:1)

string1 != string2不测试String值相等,仅测试引用相等性。您需要!string1.equals(string2)。或者您的while需要类似,

if (string1.equals(string2)) {
  // ... they're equal.
}

值得注意的是,两个String(s)必须具有相同的length()equals()才会返回false

答案 1 :(得分:0)

使用equals()方法而不是==。双等号不能用于对象比较。

答案 2 :(得分:0)

更改

if (string1.length() == string2.length() && string1 != string2)

使用

if (string1.length() == string2.length() && !string1.equals(string2))

==检查引用相等性。当你进入String变量时,它们在堆中有两个不同的引用,同时具有相同的value。要检查值的相等性,您应该使用equals()