2016-09-22 4 views
0

今後のテストを準備し、部分文字列の仕組みを理解しようとしています。 私は本当に説明をオンラインで得られないので、私に説明してください。 私のエラーは次のとおりです:StringIndexOutOfBounds例外 文字列を抽出するために部分文字列を呼び出すときにendIndexから自動的に-1のようにエラーが発生する原因を理解できません。それは私が1を追加した理由ですが、動作しません。Constant StringIndexOutOfBoundsException

public static void main(String[] args) { 
     Scanner scn = new Scanner(System.in); 
     System.out.print("Enter the string: "); 
     String string = scn.nextLine(); 


     System.out.print("Enter the start char: "); 
     char startChar = scn.next().charAt(0); 


     System.out.print("Enter the end char: "); 
     char endChar = scn.next().charAt(string.length() - 1); 

     int startIndex = string.indexOf(startChar); //Get index of the start character 
     int endIndex = string.indexOf(endChar); 

     if(startIndex == -1) { 
      System.out.println("No such substring"); //First char doesn't exist 
     } 
     else { 
      if(endIndex == -1) { 
       System.out.println("No such substring"); 
      } 
      else { 
       String extractedString = string.substring(startIndex, endIndex + 1); //Cause sub string is -1 
       System.out.println("Substring [" + extractedString + "]" + " is found"); 
      } 
     } 
+2

デバッガを試しましたか? – Li357

+0

入力データには何を入力しましたか? –

+0

文字列:フィボナッチ系列、開始文字の場合:終了文字の場合:F – Aloysius

答えて

0

char endChar = scn.next().charAt(0); 
0

なる必要がありますので、何をやっていることは、あなたがscn.next()を呼び出し、そのscn.next()呼び出しからstring.length-1で文字を取っているです。どれくらいの時間がstringで、どれくらいの時間がscn.next()ですか?

関連する問題