我正在尝试编写一个代码,用于检查字符串或字母或数字是否连续,但每次运行程序时,它都不会给我任何回复,只会出现错误:java.lang.ArrayIndexOutOfBoundsException: 4
。
我不确定问题是什么,因为我对编程很新,任何帮助都会非常感激。
public class Question1
{
public static void main(String[] args)
{
java.util.Scanner keyboardReader = new java.util.Scanner(System.in);
String userInput = keyboardReader.nextLine();
isConsecutive(userInput);
}
public static void isConsecutive(String s)
{
s = s.toUpperCase();
int x = 0;
char [] inputArray = s.toCharArray();
for (int i=0; i<s.length(); i++)
{
if (Math.abs(inputArray[i] - inputArray[(i+1)]) != 1)
{
System.out.println("false");
}
else
{
x++;
}
}
System.out.println(x);
}
}
答案 0 :(得分:4)
你必须这样做:
for (int i=0; i < s.length() - 1; i++)
因为当循环处于最后一个执行步骤并计算
时 Math.abs(inputArray[i] - inputArray[(i+1)]) != 1
,
然后inputArray[i+1]
指的是一个超出数组边界的元素。