2013-04-28 92 views
-1

我目前正在執行此任務。在任務的第一部分,它要求我用布爾值檢查一個字符串。僅當輸入字符串的每個字符都是a,c,c,g,G,t或T中的一個時才返回true和true。如果字符串爲null或空,則返回false。我有點失落,因爲我不知道如何比較它。我正在查看使用數組並檢查字符串的for循環。這是一個可行的選擇嗎?如果沒有,我應該看看有沒有其他的選擇?帶字符串的布爾方法

這是我的代碼到目前爲止。我把字符串s寫成小寫字母,以便比較容易,只用4個字符即​​可。

public static boolean isDNASequence(String s) { 
    boolean isDNASequnce = false; 
    char [] acceptableInput = {'a', 'c', 'g', 't'}; 
    String x = s.toLowerCase(); 

我是一個非常大的Java小白所以請原諒我,如果我不知道在這裏我的方式:d

+1

你應該試一下,並張貼您有麻煩一些代碼。然後我們可以給你提示和幫助你。 – 2013-04-28 04:10:20

回答

1

嘗試使用正則表達式使用。
圖案[aAcCgGtT]+應該符合您的要求。

如:

public static boolean isDNASequence(s) { 
    return s.matches("^[aAcCgGtT]+$"); 
} 

爲了進一步解釋,在報價模式說來匹配: ^ - 從字符串 [aAcCgGtT]的開始 - 所有這些字符 +的 - 至少一次 $ - 到字符串末尾

+0

你是怎麼做到的?我很抱歉,因爲我真的無能爲力 – Doh 2013-04-28 04:37:11

+0

已更新。看一看。 – lizard 2013-04-28 15:56:11

0

我想這是你在找什麼。

public static boolean isDNASequence(String s) { 
    char[] acceptableInput = { 'a', 'c', 'g', 't' }; 
    String x = s.toLowerCase(); 

    for (int i = 0; i < x.length(); i++) { 

     boolean isAcceptable = false; 

     for (int j = 0; j < acceptableInput.length; j++) { 
      if (x.charAt(i) == acceptableInput[j]) 
       isAcceptable = true; 
     } 

     if (isAcceptable == false) 
      return false; 

    } 
    return true; 

} 
0

您可以在Java文檔中找到方法String.matches()。如果字符串匹配正則表達式,它將返回true。

正則表達式模式[aAcCgGtT]+可能是你在找什麼。

我覺得this是學習正則表達式的很好的指南!

0

試試這個

public static boolean isDNASequence(String s) { 
    for (int i = 0; i < s.length(); i++) { 
     if ("AaCcGgTt".indexOf(s.charAt(i)) == -1) { 
      return false; 
     } 
    } 
    return true; 
}