2014-01-14 83 views
0

我在代碼中得到「必須是數組類型,但解析爲字符串」錯誤。它還說,我(在下面的代碼中)不能解析爲我沒有得到的變量。必須是數組類型,但解析爲字符串

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編程的新手,所以我對格式還不完全熟悉。

非常感謝, 朱奈德

+0

刪除您的for語句後的分號,對於初學者。 –

+0

您應該調整從屬從句,並將其正確嵌入'{...}'中,以便您可以看到您的意思。 – Ingo

+0

@Ingo實際上,OP應該閱讀一些介紹性教程,說實話:)這是我在相當一段時間裏看到的反覆試驗編程的最壞情況。 –

回答

3

使用標(dna[i])您不能訪問字符串的字符。使用的charAt來代替:

dna.charAt(i) == 'c' 

此外,"c"String'c'char

一件事 - 整數除法(如int_a/int_b)導致一個int,所以你失去精度,而不是 - 鑄就int S的一個double

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

所以我必須用'c'而不是「c」?還有,它仍然說我不能解決變量?非常感謝。 – user2904796

+0

@ user2904796 - 是的。有些錯誤不會顯示在問題中,因爲有人已經編輯過它。看看他執行的編輯,修改你的代碼,然後再試一次。 – MByD

+0

宣佈計數爲 double count = 0; 也可以完成這項工作。 – pshemek

0

你的問題是與語法dna[i]dna是一個字符串,您可以訪問它,因爲它將是由[]組成的數組。改爲使用dna.charAt(i);

0

您錯誤地使用String。而不是通過[]訪問使用dna.charAt(i)

從邏輯上講,字符串是Java中的一個字符數組a String type是一個類(這意味着它有屬性和方法)而不是典型的數組。

而如果要到另一個括起來比較單個字符「」,而不是「」:

if (dna.charAt(i) == 'c') 
. 
. 
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; 
} 
1

好像你有基本的Java功能,如loopsif-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; 
    } 
} 

現在你所有的異常都應該被清除。

0

有兩個誤區:

數應雙倍或應鑄造做雙答案=(雙)計數/ dna.length();

和你上面提到應該更換DNA [I]與dna.charAt(I)

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是時間的數量cg是存在於dna。 你也做了一些其他的錯誤,像你必須使用'c''g'而不是"c""g"如果你使用.charAt(i),因爲它將被視爲一個字符,然後只有你可以比較。 您可以查看這個鏈接 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

,你也可以看看你的作品可以用類似的charAt字符串做。

相關問題