0

このループの助けが必要です。基本的に私がやろうとしているのは、ループを実行することです。配列 String champs の最初の文字として文字「B」が含まれている場合、時間とチャンピオンの両方が表示されます。

誰かが私が間違ったことをしたのか、なぜ表示されないのか教えてもらえますか? これから受け取る出力は、単なる「Time Champs」です

public static void displayTeam(short[] time, String[] champs){
    System.out.println("time     Champs");
    for(int a= 0; a < time.length; a++){
        char fletter=champs[a].charAt(0);
        if("B".equals(fletter)){
            System.out.println(time[a] + "     " + champs[a]);
        }
    }
}

助けて貢献してくれたすべての人に感謝します。

4

2 に答える 2

8

これを置き換えます:

if("B".equals(fletter))

これとともに:

if('B' == fletter)

==のようなプリミティブ値に安全に使用できますchar

fletterは であるためchar、コードで起こっていることはかなり複雑です。一見すると、これがどのようにコンパイルされるのか疑問に思うかもしれません。何が起こっているかというと、引数として anをString.equals取ります。は であるObjectため、オブジェクトに自動ボックス化されます。次に、文字列は引数と等しいかどうかを確認し、引数が でさえないことに気づき、 を返します。flettercharCharacter"B"Stringfalse

于 2013-04-18T04:21:46.130 に答える
4

String と char には違いがあるため、これは機能しません。違いは、1 つはプリミティブ値であり、1 つはそうでないことです。単一引用符の代わりに二重引用符を使用することで、char ではなく文字列を作成し、単一引用符を使用します:)

于 2013-04-18T04:22:02.020 に答える