如何使用字符串创建布尔方法?

时间:2013-10-08 22:36:38

标签: java

这是我到目前为止所做的,我设法通过几个小时的工作到达这里。我的代码的问题是,如果我给它一个字符串“abcefg”,它将验证前两个字符并将其返回为true。我希望代码能够为我的所有角色做到这一点。我认为将限制设为x.length()可以做到这一点,但由于某种原因,它不起作用。

5 个答案:

答案 0 :(得分:1)

这里有各种各样的问题。

首先,您最终可以使用charAt(i + 1)调用超出范围(检查循环条件)。

其次,你怎么可能在for-loop的主体中返回true?你还没有检查过所有的角色!

但是,我认为你让这个过于复杂。您需要做的就是检查两个连续的(即字符串中彼此相邻)字符是否连续是

Math.abs(s.charAt(i) - s.charAt(i + 1)) == 1

你实际上甚至不需要演员。我们正在做的是检查两个字符之间的“距离”是否为1。

只需将其应用于字符串中的每个连续字符对,如果在该行的某处不满意,则返回false。如果退出循环而没有返回false,则可以返回true。

答案 1 :(得分:1)

public static boolean ConsecutiveCheckerAscending(String x) {
x = x.toLowerCase();

for (int i = 0; i < x.length() - 1; i++) {
    if ((int)x.charAt(i) + 1 != ((int)x.charAt(i + 1))) 
    {
        return false;
    }
}
return true;
}

public static boolean ConsecutiveCheckerDescending(String x) {
x = x.toLowerCase();

for (int i = 0; i < x.length() - 1; i++) {
    if((int)x.charAt(i) - 1 != ((int)x.charAt(i + 1)))
    {
        return false;
    }
}
return true;
}

答案 2 :(得分:0)

匆匆写下来,但它看起来像这样.-

public static boolean ConsecutiveChecker(String x) {
    boolean consecutive = true;

    x = x.toLowerCase();        

    for (int i = 0; i < x.length() - 1; i ++) {
        if ((int) x.charAt(i) + 1 != ((int) x.charAt(i + 1))) {
            consecutive = false;
            break;
        }
    }

    return consecutive;
}

答案 3 :(得分:0)

在方法结束之前,您无法确定字符串是否连续,因此您无法在中间返回true。当您发现字符串不连续时,最多可以返回false

为了提供更多建议,“连续”是什么意思? adgkm是否连续?看看当前的代码看起来像它;所有你检查的是字符的顺序。 abcdcbcd是否连续?通常“连续”意味着没有差距。

答案 4 :(得分:0)

在if和else语句中都有return语句,因此该方法将在首次检查后返回。您必须仅为退出条件返回。不要同时给予if和else