2016-10-11 5 views
1

クラスのコードを記述していましたが、このエラーが発生しました。文字列インデックスが範囲外です。私はそれが文字列= nullかもしれないかどうかを調べたが、そうではない。私はそれが方法で私のifステートメントと関係があると推測していますが、私はどこにそれを修正する方法を見つけることができませんでした。どのような助けもありがとう、ありがとう!文字列インデックスがメソッド内で範囲外にあります。Java

import java.util.*; 
public class Occurences { 
    public static void main(String[] args) { 
     int check = 0; 
     char characterInput = ' '; 
     do { 
      Scanner scan = new Scanner(System.in); 
      System.out.println("Please enter a string: "); 
      String input = scan.next(); 
      System.out.println("Enter a character to find it's occurence in the string: "); 
      characterInput = scan.next().charAt(0); 
      int i = count(input, characterInput); 

      System.out.println(characterInput + ", is in " + input + ", " + i + " times."); 
      System.out.println("To continue enter any number, to exit enter -1: "); 
      check = scan.nextInt(); 
     } while (check != -1); 
    } 
    public static int count(String input, char characterInput) { 
     int cnt = 0; 
     int j = input.length(); 
     while (j > 0) { 
     if (input.charAt(j) == characterInput) { 
     cnt += 1; 
     } 
     j--; 
     } 
    return cnt; 
    } 
} 
+0

設定最後の文字がある:あなたは方法1を使用して、それを解決しました。 – Gendarme

+0

存在しない配列インデックスにアクセスしようとすると、Javaインデックスの範囲外エラーが発生します。 Java配列はインデックス0で始まることに注意することが重要です。この情報に基づいて理解できるかどうかを確認してください。私は答えをあきらめたくありません...あなたが学ぶのを助けることはありません。 –

+0

int j = input.length() - 1; – Abdelhak

答えて

0

エラーは、ライン21で発生:他はゼロインデックス付けによって、コメント、Java、およびほとんどのプログラミング言語、インデックス文字列とアレイ型で述べたように、int j = input.length() - ゼロから始まります。

int j = input.length()-1;

かのように:だから1)のいずれかに一に満たないのいずれかであることを理由ライン21のニーズである文字列(配列)の長さでカウントを0または2)停留所でカウントを開始してい最初のインデックスが '0'であるので、1 ' - インデックス `長さ()に

int j=0;

関連する問題