我的代码中出现“必须是数组类型,但它已解析为字符串”错误。它还说我(在下面的代码中)无法解析为我没有得到的变量。
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
答案 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
中存在的时间g
或dna
。
你还犯了一些其他的错误,比如你使用'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函数的主要语法有一些问题,例如loops
或if-else
语句。点击here获取有关这些内容的详细教程。
您必须更正for-loop
和if-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]