2013-04-06 47 views
0

我正在尝试这段代码写作练习,我很失落!用布尔值比较两个字符串?

的锻炼是:

完成这需要两个字符串和一个布尔作为输入的方法。如果布尔值为true,则此方法比较前两个字符串,忽略大小写(大写/小写)。如果两个字符串的长度相同,则两个字符串被忽略大小写相等,并且两个字符串中的相应字符忽略大小写。

如果布尔是假的,这种方法应该比较两个字符串,如果第一个字符串表示的字符作为第二个字符串的相同顺序返回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); 
    } 
} 

它甚至不进行编译,但即使这样做,我敢肯定,这是行不通的。

+0

你应该检查布尔和,然后再进行恢复适当的方法的结果,你反了它。此外,布尔是这样检查,如果(myBoolean)做某事,其他做别的 – 2013-04-06 16:11:13

回答

5

你正在倒退。主题说:如果布尔值为真,那么做,否则,那么做。所以你应该用相同的方式编程它:

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

其余的是作为一个练习。你应该可以自己弄清楚。

+0

它工作耶!欢呼:) – Kimmm 2013-04-06 16:16:41

2

我认为要求的解决方案是下面的方法:

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

    return a.equals(b); 
} 

你的方法DAS不能编译,因为Java编译器假设是温特某些情况下,如果两个条件演算值为false。因为编译器无法确保至少有一个return语句可到达。

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"); 
    } 
} 
0

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

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