-1

我正在尝试编写一个代码来检查一个字符串或字母或数字是否是连续的,但是每次我运行该程序时,它只会给我一个错误: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);
  }
}
4

1 回答 1

4

你所要做的:

for (int i=0; i < s.length() - 1; i++)

因为当循环处于最后一个执行步骤并计算

Math.abs(inputArray[i] - inputArray[(i+1)]) != 1,

theninputArray[i+1]引用超出数组边界的元素。

于 2013-10-19T22:21:26.360 回答