2015-10-16 112 views
0

嘿所以我想要得到DNA字符串的GC含量是由C或G字符串中符號的百分比給出的。例如,「AGCTATAG」是.375或37.5%。這是我帶來的。我遇到了計算問題,並返回double作爲字符串。雙字符串Java循環

public static double gcContent(String dna) { 
    //TODO Implement this method 
     double gcContent = 0; 
     double count=0; 
     for (int i = 0; i < dna.length(); i ++) { 
      if (gcContent == dna.length()){ 
       gcContent = (dna.length()/ 2) ; 
      } 
      return double.toString (gcContent); 
     } 
    } 
+0

你的方法總是返回0,你一定不能轉換爲字符串,如果你的方法返回雙。你能否糾正你的例子。 – frifle

+0

好吧,我會把它作爲一個雙重的,但我怎樣才能得到正確的輸出? – javakook

回答

1

你不能在原始類型變量中調用toString()。您可以使用:

String.valueOf(gcContent) 
0

如果你堅持使用toString你可以在一個Double對象,像這樣的框中的值:

new Double(gcContent).toString(); 

否則最apropriate方式我認爲是使用String.format,因爲 你可以格式化字符串。例如,如果你想兩位,小數點後您有:

return String.format("%.2f", gcContent); 
0

我認爲你可以使用Double.toString(GC含量);

2

您的計算沒有意義。 你必須迭代你的dna字符串的每個字符並將其與你期望的值char('C'或'G',大寫和小寫?)進行比較 如果你想返回結果作爲字符串,你必須將返回類型也更改爲String。

public static String gcContent(String dna) { 
    //TODO Implement this method 
    char c = 'C'; 
    char g = 'G'; 
     double gcContent = 0; 
     double count=0; 
     for (int i = 0; i < dna.length(); i ++) { 

      if (dna.charAt(i) == c || dna.charAt(i) == g){ 
       count++; 
      } 
     } 
     gcContent = count/(double)dna.length(); 
     return String.valueOf(gcContent); 
    } 
+0

jep,就是這樣。但是我不會在這個方法中轉換爲String。分開關注。你有一個方法來完成計算 - 它返回兩倍。然後你有一個用戶界面或報告或只是一些簡單的'System.out ...' - 你轉換爲字符串。 – frifle

+0

是的,當你需要它作爲字符串的時候,這是更簡潔的方式來返回double值並在以後轉換爲字符串。但TS希望「返回字符串」:) – Winusch

0

您需要統計CG字符。然後您可以使用String.format(String, Object...)返回格式化的String。喜歡的東西,

public static String gcContent(String dna) { 
    if (dna == null || dna.isEmpty()) return "0%"; 
    int count = 0; 
    for (char ch : dna.toUpperCase().toCharArray()) { 
     switch (ch) { 
     case 'G': case 'C': 
      count++; 
     } 
    } 
    return String.format("%.1f%%", 100 * (count/(double) dna.length())); 
} 

public static void main(String[] args) { 
    System.out.println(gcContent("AGCTATAG")); 
} 

輸出時(如需要)

37.5%