0

我正在创建一种方法,其中用户输入必须键入 A/B 才能获得返回。如何使我的代码不区分大小写以使其正常工作?

 String examcode (String code) {
    if (code.compareToIgnoreCase("A")) {
        EXAM_NAME = "Subject A";
    }
    else if (code.compareToIgnoreCase("B")) {
         EXAM_NAME = "Subject B";
    }
    else {
        EXAM_NAME = "no code";
    }
    return EXAM_NAME;
}
4

6 回答 6

5

使用equalsIgnoreCase(),不使用compareToIgnoreCase()

if (code.equalsIgnoreCase("A")) {
   EXAM_NAME = "Subject A";
} //...

如果要用于compareToIgnoreCase()检查相等性,则需要将结果与0

if (code.compareToIgnoreCase("A") == 0) {
    //...

就像任何其他compareTo方法一样。但是在这里使用它没有任何优势。

编辑:

您的整个方法的替代方法可能是使用不区分大小写的映射。像这样的东西:

Map<String, String> subjects = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER);

subjects.put("A", "Subject A");
subjects.put("B", "Subject B");

//...
String subjectName = subjects.get(code);
if ( subjectName == null ) {
    subjectName = "no code";
}

或者,您也可以使用普通的区分大小写的映射,并在执行映射操作之前将所有键转换为小写。

于 2012-09-09T06:27:46.783 回答
3

只需使用该方法 - String.equalsIgnoreCase(java.lang.String)它返回 aboolean并完成您正在寻找的工作。

if (code.compareToIgnoreCase("A"))无效,因为compareToIgnoreCase返回int

于 2012-09-09T06:28:22.623 回答
3

阅读String 的 javadoc 将为您提供答案。谷歌本可以做到这一点。

  • 使用code.equalsIgnoreCase("your string")which 返回一个布尔值,或

  • 使用code.compareToIgnoreCase("your string") == 0. compareToIgnoreCase给你一种方法来确定两个字符串的“顺序”。再次,享受 javadoc。

于 2012-09-09T06:30:21.460 回答
1

使用相同的代码,但使用 equalsIgnoreCase(String) 而不是 compareToIgnoreCase(String)。

于 2012-09-09T06:35:13.457 回答
0

你想要的是String#equalsIgnoreCase(String)返回一个布尔值。

于 2012-09-09T06:28:40.383 回答
0

在比较之前使用 String.toLowerCase()(或 String.toUpperCase())。

if (code.toLowerCase().equals("a")) {
    EXAM_NAME = "Subject A";
}

请注意,与所有字符串方法一样,code.toLowerCase 不会更改存储在 'code' 中的字符串,而是以小写形式返回 'code' 值的副本。

于 2012-09-09T06:29:48.293 回答