Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试使用字符比较递增计数器_Java_String_Charat - Fatal编程技术网

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++;}