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)を使用するだけで、 a を返し、boolean探しているものを処理します。

if (code.compareToIgnoreCase("A"))compareToIgnoreCaseを返すため、 は有効ではありませんint

于 2012-09-09T06:28:22.623 に答える
3

String の javadoc を読むと、答えが得られます。グーグルはそれを正しかったでしょう。

  • code.equalsIgnoreCase("your string")ブール値を返すものを使用、または

  • 使用してcode.compareToIgnoreCase("your string") == 0ください。 compareToIgnoreCase2 つの文字列の「順序」を決定する方法を提供します。繰り返しますが、javadoc をお楽しみください。

于 2012-09-09T06:30:21.460 に答える
1

同じコードを使用しますが、compareToIgnoreCase(String)の代わりにequalsIgnoreCase(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 に答える