1

我正在尝试这个代码编写练习,我很迷茫!

练习是:

完成以两个字符串和一个布尔值作为输入的方法。如果布尔值为真,则此方法比较前两个字符串,忽略大小写考虑(大写/小写)。如果两个字符串的长度相同,则认为它们相等而忽略大小写,并且两个字符串中的相应字符是相等的忽略大小写。

如果布尔值为 false,则此方法应比较两个字符串,如果第一个字符串表示与第二个字符串相同的字符序列,则返回 true,否则返回 false。

注意:compareTwoStrings("HELLO", "", false)应该返回false。

这是我的尝试:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase) 
{ 
    if (a.equalsIgnoreCase(b)) {
        return (isIgnoreCase==true);
    }
    else if (a.equals(b)) {
       return (isIgnoreCase==false);
    }
}

它甚至没有编译,但即使它编译了,我敢肯定它不会工作。

4

4 回答 4

6

你倒着做。主题说:如果布尔值是真的,那么做这个,否则,那么做那个。因此,您应该以相同的方式对其进行编程:

if (isIgnoreCase) {
    return ...
}
else {
    return ...
}

剩下的留作练习。你应该能够自己弄清楚。

于 2013-04-06T16:11:40.813 回答
2

我认为请求的解决方案是以下方法:

public boolean compareTwoStrings(String a, String b, boolean isIgnoreCase)
{
    if (isIgnoreCase)
    {
        return a.equalsIgnoreCase(b);
    }

    return a.equals(b);
}

您的方法无法编译,因为 Java 编译器假定在某些情况下,如果条件评估为false. 因此,编译器无法确保至少有一条return语句是可达的。

于 2013-04-06T16:13:21.913 回答
0

我想这就是你要找的。

public static void myMethod(String str, String str2, boolean bool) {

    if (bool) {
        str = str.toLowerCase();
        str2 = str2.toLowerCase();
        if (str.equals(str2))
            System.out.println("strings equal");
    }
    else {
        System.out.println("false condition");
    }
}
于 2013-04-06T16:24:35.213 回答
0

这可能是您问题的解决方案:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase){ 
  if (isIgnoreCase) 
    return (a.toLowerCase()).equals(b.toLowerCase());        
  else 
   return a.equals(b);      
}
于 2013-04-06T16:36:56.633 回答