【发布时间】:2019-05-08 18:19:25
【问题描述】:
我正在编写一个方法,该方法应该在每次找到字母c 时遍历一个字符串并增加一个计数器。该方法使用计数来计算字符串为c 的比例。我添加了打印语句来调查为什么它错误地返回 0.0 以获取包含一些 c 的字符串。
我曾尝试将计数器声明为 int,然后稍后将其转换为 double,但这没有帮助。
public double cRatio() {
String dna = "ATCCCCCCGTACCTAGCAA";
double cCount = 0.0;
for (int i = 0; i < dna.length(); i++) {
char ch = dna.charAt(i);
if (ch == 'c') {cCount++;}
}
System.out.println("C Count is : " + cCount);
System.out.println("dna.length() is : " + dna.length());
double cgRatio = (cCount / dna.length());
System.out.println("C Ratio is : " + cgRatio);
return cgRatio;
}
我希望计数器在打印时的值为 9.0,但实际上是 0.0。
【问题讨论】:
-
当
ch == 'C'输出为0.47368421052631576 -
输出是正确的,因为您只计算小写字符'c'。如果您想同时计算两者,则可以将 ch 转换为小写并计数。 if (Character.toLowerCase(ch) == 'c') 使用这个 if 条件,无论大小写如何,它都应该起作用