-1

私は現在、このタスクを実行しています。タスクの最初の部分では、文字列をブール値でチェックする必要がありました。true を返し、入力文字列のすべての文字が a、A、c、C、g、G、t、または T のいずれかである場合にのみ 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

4

4 に答える 4

1

正規表現を使ってみてください。
パターン[aAcCgGtT]+は、探しているものと一致する必要があります。

例えば:

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

さらに説明すると、引用符内のパターンは次のように一致することを示しています: ^- 文字列の先頭から [aAcCgGtT]- これらの文字のいずれか +- 少なくとも 1 回 $- 文字列の末尾まで

于 2013-04-28T04:13:04.960 に答える
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;

}
于 2013-04-28T04:36:46.380 に答える
0

メソッドString.matches()は Java ドキュメントにあります。String が正規表現と一致する場合は true を返します。

正規表現パターン[aAcCgGtT]+はおそらくあなたが探しているものです。

これは、正規表現を学ぶための非常に良いガイドだと思います!

于 2013-04-28T04:37:47.287 に答える
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;
}
于 2013-04-28T04:46:21.980 に答える