Java 尝试使用字符比较递增计数器
我正在编写一个方法,该方法应该遍历一个字符串,并在每次找到字母Java 尝试使用字符比较递增计数器,java,string,charat,Java,String,Charat,我正在编写一个方法,该方法应该遍历一个字符串,并在每次找到字母c时递增一个计数器。该方法使用计数来计算c字符串的比例。我添加了print语句来调查为什么它错误地返回了0.0,而字符串中有一些c 我曾尝试将计数器声明为int,然后稍后将其强制转换为double,但没有效果 public double cRatio() { String dna = "ATCCCCCCGTACCTAGCAA"; double cCount = 0.0; for (int
c
时递增一个计数器。该方法使用计数来计算c
字符串的比例。我添加了print语句来调查为什么它错误地返回了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;
}
public-double-cRatio(){
字符串dna=“atccgtacctagcaa”;
双帐户=0.0;
对于(int i=0;i
我希望计数器在打印时的值为9.0,但实际上是0.0。您的代码不计算字母
c
,因为您正在检查字母c
。小c
不等于上c
(不同)
这将解决您的问题。您还可以使用if(ch.toUpperCase().equals('C'){cCounter++;}为了使其不区分大小写,我明白了。这很愚蠢。此方法是一个更大程序的一部分,该程序在处理输入之前将所有输入转换为小写。当单独测试此方法时,对.toLowerCase的调用超出了测试范围。当
ch='C'
时,输出为0.47368421052631576
the输出是正确的,因为您只对小写字符“c”进行计数。如果您想同时对两者进行计数,则可以将ch转换为小写和计数。如果(Character.toLowerCase(ch)='c'),则使用此If条件,无论大小写如何,该条件都应有效
if (ch == 'C') {cCount++;}