-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

次にinputArray[i+1]、配列の範囲外にある要素を参照します。

于 2013-10-19T22:21:26.360 に答える