2016-01-25 98 views
0
import java.util.Scanner; 

public class ReverseCompliment 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     String seqFirst = "0"; 
     String seqSecond = "0"; 
     String seqReverseCompliment = ""; 
     boolean isOrIsNot = true; 

     System.out.print("Enter the first sequence: "); 
     seqFirst = in.next(); 
     System.out.print("Enter the second sequence: "); 
     seqSecond = in.next(); 

     for (int i = 0; i < seqFirst.length(); i++) 
     { 
     if (seqFirst.charAt(i) == 'A') 
     { 
      seqReverseCompliment = "T" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'T') 
     { 
      seqReverseCompliment = "A" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'C') 
     { 
      seqReverseCompliment = "G" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'G') 
     { 
      seqReverseCompliment = "C" + seqReverseCompliment; 
     } 
     else 
     { 
      System.out.println("incorrect input"); 
     } 
     } 
     for (int i = 0; i < seqFirst.length(); i++) 
     { 
      if (seqSecond.charAt(i) != seqReverseCompliment.charAt(i)) 
      { 
      isOrIsNot = false; 
      } 
      else if (seqSecond.charAt(i) == seqReverseCompliment.charAt(i)) 
      { 
      isOrIsNot = true; 
      } 
     } 
     if (isOrIsNot = true) 
     { 
      System.out.println("These are reverse compliments"); 
     } 
     else if (
     { 
      System.out.println("These are not reverse compliments"); 
     } 
    } 
} 

本質上我需要用戶輸入兩個DNA序列,然後程序需要比較它們並確定兩個序列是否是相互反向的讚美。我不想找人爲我完成這項任務,我只是不知道爲什麼它不能正常工作。 當我測試它時,它總是說這兩個是相反的讚美。爲什麼我的代碼不聽?

screenshot of assignment

+0

你必須提供更多的細節。 「*無法正常工作*」不足。 –

+0

「當我測試它時,它總是說這兩個是反向讚美」不管輸入如何,程序總是說這兩個是反向讚美 –

+1

您的'isOrIsNot'變量只反映最後的比較結果。一旦發現第一個不匹配,您需要從循環中「斷開」。 –

回答

0

可以使用String.equals只是比較seqSecondseqReverseCompliment

import java.util.Scanner; 

public class ReverseCompliment 
{ 
    public static void main(String[] args) 
    { 
     Scanner in = new Scanner(System.in); 
     String seqFirst = "0"; 
     String seqSecond = "0"; 
     String seqReverseCompliment = ""; 

     System.out.print("Enter the first sequence: "); 
     seqFirst = in.next(); 
     System.out.print("Enter the second sequence: "); 
     seqSecond = in.next(); 

     for (int i = 0; i < seqFirst.length(); i++) 
     { 
     if (seqFirst.charAt(i) == 'A') 
     { 
      seqReverseCompliment = "T" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'T') 
     { 
      seqReverseCompliment = "A" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'C') 
     { 
      seqReverseCompliment = "G" + seqReverseCompliment; 
     } 
     else if (seqFirst.charAt(i) == 'G') 
     { 
      seqReverseCompliment = "C" + seqReverseCompliment; 
     } 
     else 
     { 
      System.out.println("incorrect input"); 
     } 
     } 
     if (seqSecond.equals(seqReverseCompliment)) 
     { 
      System.out.println("These are reverse compliments"); 
     } 
     else if (
     { 
      System.out.println("These are not reverse compliments"); 
     } 
    } 
} 
+0

有沒有辦法避免額外的變量(seqReverseCompliment)。這正是我想要做的,但我的大腦並沒有把它搞清楚。就像我需要比較seqFirst的第一個字符和seqSecond的最後一個字符,但由於某種原因,我不知道如何編碼。我認爲它會更清潔 –

相關問題