2017-05-31 7 views
-2

スレッド「main」で例外が発生し続けるjava.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です:35018 、35054文字がさらに大きい私はちょうど最近、どれくらいのチャレーターがあるのか​​を調べましたが、7000人近くが誰かがこれを手伝ってくれるかどうか疑問に思っていました。これは問題のコードです。StringIndexOutOfBoundsExceptionが発生しても、文字列が指定された値よりも長い場合でも

  if (twojunglers[0].equals("hecarim")) { 
      if (twojunglers[1].equals("leesin")) { 
       String codeblock; 
       String codeblock1; 
       String codeblock2; 
       while ((codeblock = br.readLine()) != null) { 
        String makelinesintoone; 
        StringBuilder builder = new StringBuilder(); 
        while ((makelinesintoone = br.readLine()) != null){ 
         builder.append(makelinesintoone); 

        } 
        int hi = builder.indexOf("Red\">"); 
        if (hi >= 0) { 
         codeblock1 = codeblock.substring(0, hi); 
         int cutstring_ = codeblock1.indexOf("Champion\">"); 
         if (cutstring_ >= 0) { 
          codeblock2 = codeblock1.substring(0, cutstring_); 
          System.out.println(codeblock2); 
+0

*「私はStringoutofboundsExceptionを受け取り続けて、私はちょうど最近に何人かのcharectersとその周りに7000をチェックしたにもかかわらず35054文字が大きいと伝えます」*その例外は、インデックス35kが7k文字長い文字列ですが、なぜこれが当てはまるのでしょうか? – Tom

+0

これは正しいtomです。 – Face123

+0

ようこそスタックオーバーフロー。ベスト[最小、完全、および検証可能なサンプルを作成する](https://stackoverflow.com/help/mcve)少なくとも、例外からスタックトレースをポストし、それが参照するポストされたコードのどの行を指しているか。 –

答えて

0

StringIndexOutOfBoundsExceptionString目的で使用されるインデックスがStringのサイズよりも負以上のいずれかであることを示す例外です。あなたの実際のコードで

、問題は非常におそらく以下substring()呼び出しによって引き起こされている:あなたはhi intを返しbuilder変数にindexOf()を起動するが、その後、あなたがcodeblocksubstring(0, hi)を呼び出す

int hi = builder.indexOf("Red\">"); 
if (hi >= 0) { 
    codeblock1 = codeblock.substring(0, hi); 

変数。

while ((codeblock = br.readLine()) != null) { 

と::

StringBuilder builder = new StringBuilder(); 
while ((makelinesintoone = br.readLine()) != null){ 
    builder.append(makelinesintoone); 

それは意味をなさない
問題は、二つの異なる読み出し線からそれらを値としてcodeblockbuilder変数が同じStringを参照していないということです。

+0

あなたは実際に間違ったデイヴィッドですが、まったく同じ文字列を参照するのではなく、文字列内の内容が同じです。 – Face123

+0

@ Face123説明できますか? – davidxxx

0

完全な説明や利用可能なコードがすべてないため、問題は非常に鈍いです。たぶんあなたの問題をどのラインが示しているのかを確認し、あなたの質問を更新してください。

確認することは時間を節約することができますが、

はちょうどあなたがcharAtを使用してstringの境界の特定のchar外を取得している場合は、stringsstringscharsまたはintsでないstringsなど

を割り当てていることを確認してください。

あなたの質問を完全なエラーで更新してください。

関連する問題