2012-09-22 266 views
2

嗯,我有兩個字符串比較,如果他們匹配檢查一個字母,如果命中' - '我需要計算多少個' - '有順序,並把它們放在一個就好像他們只有一個字符一樣,並計算這組' - '中有多少個T和C.輸出應該是2.1T和2.2C,另一個是5.2C。比較兩個字符串由字母

String dna1 = "TC---CA--"; 
    String dna2 = "TCTCCCACC"; 
    char[] dnaChar = dna1.toCharArray(), dna2Char = dna2.toCharArray(); 
    int cont = 0; 
    int letters = 0; 


    for (int i = 0; i < dnaChar.length; i++) { 
     if (dnaChar[i] != dna2Char[i]) { 
      int mut = i + 1; 

      if (dna1.charAt(i) == '-') { 

       cont++; 
       mut -= cont; 
       if (dna2.charAt(i) == 'C') { 
        letters++; 
       } 

       System.out.println(mut + "." + letters + dna2.charAt(i)); 
      } else { 
       letters = 0; 
       cont = 0; 
       mut += 1; 
       System.out.println("" + dna1.charAt(i) + " " + mut + " " + dna2.charAt(i)); 
      } 
     } 
    } 

輸出 2.0T 2.1C 2.2C 4.3C 4.4C ,我想什麼2.1T 2.2C 5.2C

回答

3

您所期望的輸出絕不會從您獲得上面的代碼..因爲在你的if構造中,每當你在你的第一個字符串中遇到' - ',就會被執行。因此,你將有5個輸出,而不是3個。

其次,要得到你需要的,你將不得不在這裏做一些額外的工作..

  • 首先當您在第一個字符串中遇到' - '時,您需要將第二個字符串中相應的字符存儲到某個變量中..因爲您需要它來檢查連續字符。第二,每獲得一個' - ',檢查當前字符與最後一個字符匹配的前一個' - '。如果它是相同的,增加計數1,
  • 如果不一樣,只需打印你想要的並重置你的計數到0
  • 只要你遇到不是' - '的字符,在你的第一個字符串,打印當前字符和計數值,並重新設置..

您可以根據我剛纔提到的步驟嘗試代碼..

* PS: - 對於任何問題你得到代碼,你應該先寫下你應該遵循的步驟來在紙上解決它。然後將其逐步轉換爲代碼。這將是更容易理解的問題,並解決它也..

+0

感謝您的這些步驟,我試着寫下一步一步的代碼,但我很累,我想錯過了一些步驟,順便說一句,我知道我wasn不會得到我期待的代碼輸出,所以這就是爲什麼我嘗試在這裏發佈一些代碼只是爲了獲得一個上下文。非常感謝你! –