我使用charAt的循环不起作用

时间:2013-04-18 04:18:37

标签: java

我需要这个循环的帮助。基本上我要做的是运行一个循环。当数组String champs包含一个字符'B'作为第一个字母时,它将显示时间和冠军。

有人可以告诉我我做错了什么或为什么没有出现?我从中收到的输出只是“时间冠军”

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

感谢所有帮助和贡献的人。

2 个答案:

答案 0 :(得分:8)

替换它:

if("B".equals(fletter))

用这个:

if('B' == fletter)

==等原始值使用char是安全的。

由于fletterchar,因此您的代码所发生的事情相当复杂。乍一看,人们可能想知道这甚至是如何编译的。发生的事情是String.equalsObject为参数。由于fletterchar,因此会将auto-boxed转换为Character个对象。然后String "B"检查它是否等于它的参数,注意它的参数甚至不是String,并返回false

答案 1 :(得分:4)

这不起作用,因为String和char之间存在差异。 差异是一个是原始值,一个不是,并且通过使用双引号而不是单引号,您正在使用字符串而不是字符使用单引号:)