必须是数组类型,但已解析为字符串

时间:2014-01-14 09:51:44

标签: java arrays string

我的代码中出现“必须是数组类型,但它已解析为字符串”错误。它还说我(在下面的代码中)无法解析为我没有得到的变量。

    public class DNAcgcount{

        public double ratio(String dna){
        int count=0;
        for (int i=0;i<dna.length();i++);
            if (dna[i]== "c"){
            count+= 1;
            if (dna[i]=="g"){
            count+=1;
        double answer = count/dna.length();
        return answer;

    }

    }


}

}

你能帮助我找出问题所在吗?我是Java新手,所以我对这种格式还不太满意。

非常感谢, Junaid

7 个答案:

答案 0 :(得分:4)

您无法使用下标(dna[i])访问String的字符。请改用charAt:

dna.charAt(i) == 'c'

此外,"c"String'c'char

还有一件事 - 整数除法(例如int_a / int_b)会产生一个int,因此你会失去准确性,而是将int中的一个转换为double

double answer = count/(double)dna.length();

答案 1 :(得分:2)

使用{}来定义循环的范围。此外,正如其他人已经指出的那样,使用charAt而不是[]并使用'表示字符,并对ratio使用浮点除法。

for (int i = 0; i < dna.length(); i++) {
    if (dna.charAt(i) == 'c') {
        count += 1;
    }
    if (dna.charAt(i) == 'g') {
        count += 1;
    }
}

或者更短一点,一起使用||两个子句

if (dna.charAt(i) == 'c' || dna.charAt(i) == 'g') {
    count += 1;
}

答案 2 :(得分:2)

我认为你目前在括号中有点弱,这是我从你的代码中理解并纠正它;

public class DNAcgcount{

    public double ratio(String dna){
    int count=0;
    for (int i=0;i<dna.length();i++){
        if (dna.charAt(i)== 'c')
        count+= 1;
        if (dna.charAt(i)=='g')
        count+=1;
    }
        double answer = count/(double)dna.length();
        return answer;
    }
}

如果我们必须在你想要的时候关闭括号if。我想您希望count成为c中存在的时间gdna。 你还犯了一​​些其他的错误,比如你使用'c''g'代替"c""g",因为它会被视为一个角色,然后只有你可以比较。 您可以查看此链接 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

你也可以看看你可以用charAt等字符串做的工作。

答案 3 :(得分:1)

似乎您对基本java函数的主要语法有一些问题,例如loopsif-else语句。点击here获取有关这些内容的详细教程。

您必须更正for-loopif-statement

for(int i=0;i<dna.length();i++){
    if(...){
       ...;
    }
    if(...){
       ...;
    }
}

现在你不会得到Cant be resolved to a variable... exception

第二件事是使用你的字符串。你必须像这样使用它:

for(int i=0;i<dna.length();i++){
    if(dna.charAt(i) == 'c'){
       count += 1;
    }
    if(dna.charAt(i) == 'g'){
       count += 1;
    }
}

现在应该终止所有例外情况。

答案 4 :(得分:0)

您的问题是使用语法dna[i]dna是一个字符串,您可以通过[]访问它,因为它是一个数组。请改用dna.charAt(i);

答案 5 :(得分:0)

您错误地使用String。而不是通过[]访问使用dna.charAt(i)

Altough逻辑上,字符串是Java中的一个字符数组String类型是一个类(这意味着它具有属性和方法)而不是典型的数组。

如果你想将一个角色与另一个角色进行比较,请用''而不是“”代替它:

if (dna.charAt(i) == 'c')
.
.

答案 6 :(得分:0)

有两个错误:

计数应该是双倍还是应该是双重答案=(双)计数/ dna.length();

如上所述,你应该用dna.charAt(i)

替换dna [i]