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