用布尔值比较两个字符串?

我正在尝试这段代码写作练习,我迷失了!

练习是:

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

如果boolean为false,则此方法应比较两个字符串,如果第一个String表示与第二个String相同的字符序列,则返回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); } } 

它甚至没有编译,但即使它确实如此,我相信它不会工作。

你正在倒退。 主题说:如果布尔值为真,那么执行此操作,否则,然后执行此操作。 所以你应该以同样的方式编程:

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

剩下的就是练习。 你应该能够自己解决这个问题。

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

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

您的方法不能编译,因为Java编译器假设在某些情况下,如果条件评估为false则表示unter。 因此,编译器无法确保至少有一个return语句可以访问。

我想这就是你要找的东西。

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

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

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