2012-09-22 5 views
2

음, 나는 두 글자를 비교하고 편지가 일치하면 편지로 확인하고, 안타를 치면 '얼마나 많은'- '가 순서대로 있는지 마치 하나의 char 인 것처럼 그룹화하고이 그룹에 얼마나 많은 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.0 T 2.1C 2.2C 4.3C 4.4C 그리고 내가 원하는 무엇을 당신이 예상 출력에서 ​​2.1T 2.2C 5.2C

답변

3

을 얻을되지 않을 것이다 첫 번째 문자열에서 '-'가 발생할 때마다 if 구조가 실행되기 때문에 3이 아닌 5 개의 출력을 갖게됩니다.

둘째, 필요한 것을 얻기 위해, 너는 여기에 약간의 여분의 일을해야 할 것이다. ..

  • 첫 번째 문자열에서 '-'가 발견되면 두 번째 문자열의 해당 문자를 변수에 저장해야합니다. 연속 문자를 확인해야하기 때문에 필요합니다.
  • 둘째, '-'을 얻을 때마다 이전 '-'에 매치 한 마지막 문자로 현재 문자를 검사하십시오. 동일한 경우 숫자를 1 씩 늘리십시오.
  • 동일하지 않은 경우 원하는 것을 인쇄하고 카운트를 0으로 재설정하십시오.
  • '-'문자가 아닌 문자를 만나는 즉시, 첫 번째 문자열에, 현재의 문자 카운트 값을 인쇄하고이를 다시 ..
당신은 내가 언급 한 단계에 따라 코드를 시도 할 수 있습니다

..

* PS : - 어떤 문제에 대한 코드를 작성하려면 먼저 종이에서 해결해야하는 단계를 적어 두어야합니다. 그런 다음 코드로 단계별로 변환하십시오. 문제를 이해하고 해결하는 것이 더 쉬워 질 것입니다 ..

+0

그 단계를 수행해 주셔서 감사합니다. 단계별로 코드를 적어 보려고했지만 너무 피곤해서 몇 단계를 놓친 것 같아요. 이 코드로 기대했던 결과물을 얻지는 않을 것입니다. 그래서 여기에 여러분이 컨텍스트를 얻을 수있는 코드가있는 tryed post가 있습니다. 고마워요! –