带字符串的布尔方法

时间:2013-04-28 04:09:17

标签: java arrays for-loop character

我目前正在执行此任务。在任务的第一部分,它要求我用布尔值检查字符串。只有当输入字符串的每个字符都是a,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

4 个答案:

答案 0 :(得分:1)

尝试使用正则表达式。
模式[aAcCgGtT]+应与您正在寻找的模式匹配。

例如:

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

为了进一步解释,引号中的模式表示匹配: ^ - 从字符串的开头 [aAcCgGtT] - 任何这些角色 + - 至少一次 $ - 到字符串的末尾

答案 1 :(得分: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;

}

答案 2 :(得分:0)

您可以在Java文档中找到方法String.matches()。如果String匹配正则表达式,它将返回true。

正则表达式模式[aAcCgGtT]+可能正是您所寻找的。

我发现this是学习正则表达式的非常好的指南!

答案 3 :(得分: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;
}