2015-10-04 67 views
1

我想創建一個方法,將一個互補的DNA庫分配給另一個。用char輸入和char輸出寫一個方法

以下是我有現在:

public class DnaTest { 
    public static void main(String[] args){ 

} 

    public static boolean aGoodBase (char c) {     
    boolean aBase; 

    if (c == 'A' || c == 'G' || c == 'C' || c == 'T') 
    { 
     aBase = true;  
    } 
    else 
    { 
     aBase = false; 
    } 
    System.out.println(aBase); 
    return aBase; 

    } 

    public static char baseComplement (char c){ 
    boolean anotherBase = isGoodBase(c); 



    if (anotherBase) 
    { 
     if (isGoodBase('A')) 
     { 
     c = 'T'; 
     } 

     else if (isGoodBase('T')) 
     { 
     c = 'A'; 
     } 

     else if (isGoodBase('G')) 
     { 
     c = 'C'; 
     } 

     else if (isGoodBase('C')) 
     { 
     c = 'G'; 
     } 

     System.out.println(c); 
     return c; 
    } 

    else 
    { 
     System.out.println(c); 
     return c; 
    } 

    } 
} 

第二種方法應首先驗證如果輸入的字符是一個有效的鹼(ACG或T)通過使用第一種方法,然後分配其互補鹼基(如果底座無效,則應打印出相同的字符,例如輸入Z,輸出Z)。

有了這個代碼,我得到下面的輸出,當我輸入「A」:

true 
true 
true 
T 

,但我得到了完全相同的輸出,如果我輸入另一個基地......

當我輸入一個非有效的基礎,如'z',我得到:

false 
false 
z 

有人可以幫我嗎?

+1

提示:switch語句將是解決此問題的更簡單的方法。接下來,請注意,您正在調用'if(isGoodBase('A'))'等 - 這些調用根本不依賴於'c'的值... –

+0

BTW:aGoodBase - isGoodBase – laune

+0

感謝您的支持回答!不幸的是,我不允許使用switch語句,我將根據您剛纔告訴我的內容和編輯我的帖子來更改我的代碼。謝謝 ! – Jayzpeer

回答

0

在確定互補的基礎代碼,你寫:

if (isGoodBase('A')) { 
    c = 'T'; 
} 

當你應該寫:

if (c == 'A') { 
    c = 'T'; 
} 

您已經檢查了基地c是一個正確的鹼基(因爲我們在anotherBasetrue)的情況下,所以你不需要再檢查一次。

您可以用switch statement這更容易改寫:

switch (c) { 
case 'A': c = 'T'; break; 
case 'T': c = 'A'; break; 
case 'C': c = 'G'; break; 
case 'G': c = 'C'; break; 
} 
+0

我不能使用switch語句,但是我已經在if語句中應用了更改,現在打印了正確的基礎。但我仍然得到布爾值打印兩次......爲什麼呢? – Jayzpeer

+0

@Jayzpeer在你的文章中,你缺少'main'方法中的代碼。也許你在裏面調用'isGoodBase'? – Tunaki

+0

是啊,我的壞:),非常感謝你! – Jayzpeer

0

更少的代碼 - 錯誤機會較少。

public static char baseComplement (char c){ 
    int index = "ATGC".indexOf(c); 
    if(index >= 0){ 
     return "TACG".charAt(index); 
    } else { 
     return c; 
    } 
} 

強烈建議對文字使用最終的靜態字符串。