我需要这个循环的帮助。基本上我要做的是运行一个循环。当数组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]);
}
}
}
感谢所有帮助和贡献的人。
答案 0 :(得分:8)
替换它:
if("B".equals(fletter))
用这个:
if('B' == fletter)
对==
等原始值使用char
是安全的。
由于fletter
是char
,因此您的代码所发生的事情相当复杂。乍一看,人们可能想知道这甚至是如何编译的。发生的事情是String.equals
以Object
为参数。由于fletter
是char
,因此会将auto-boxed转换为Character
个对象。然后String "B"
检查它是否等于它的参数,注意它的参数甚至不是String
,并返回false
。
答案 1 :(得分:4)
这不起作用,因为String和char之间存在差异。 差异是一个是原始值,一个不是,并且通过使用双引号而不是单引号,您正在使用字符串而不是字符使用单引号:)