2016-04-27 10 views
-4

入力ファイルから集団を見つけるためにシェルソートを使用しています。ここでなぜ私はStringIndexOutOfBoundsExceptionを取得していますか?文字列インデックスが範囲外です:65

は私のコードです:

package assignment.pkg3; 

import java.io.*; 

import java.util.*; 

public class Sorting{ 

    public static void main (String[] args) throws IOException 
    { 

     String[] countryArray = new String[238]; 
     String [] newStringArray = new String [238]; 
     Scanner stdIn = new Scanner(new File("C:\\Users\\talls_000\\Downloads\\CountryUnsortedFormat.txt")); 

     //reads the file into the array 
     while(stdIn.hasNext()) 
     { 
     for (int i = 0; i < countryArray.length; i++) 
     { 
      countryArray[i] = stdIn.nextLine(); 
     }//end for 
     } 
     int j; 
     int high = 65; 
     String temp; 
     //temp=countryArray[ i ].substring(50, 65); 
     for(int gap = countryArray.length/2; gap > 0; gap /= 2) 
     { 
     for(int i = gap; i < countryArray.length; i++) 
     { 
      temp=countryArray[ i ].substring(50,high); 
      for(j = i; j >= gap && temp.compareTo(countryArray[ j - gap ]) < 0; j -= gap) 
      { 
       countryArray[ j ] = countryArray[ j - gap ]; 
       countryArray[ j ] = temp; 
      } 


     } 
     } 

     for (int i = 0; i < countryArray.length; i++) 
     { 
     System.out.println(countryArray[i]); 
     }//end for 
    } 
} 

私はライン33上のエラーが表示されます。temp=countryArray[ i ].substring(50,high);

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 65 
    at java.lang.String.substring(String.java:1950) 
    at assignment.pkg3.Sorting.main(Sorting.java:33) 

私は0に50を変更した場合、それは動作しますが、私はスポット50から取る必要があります。 このエラーが発生するのはなぜですか?

+2

あなたは[mcve]を作ることを学んでいなかったので。そのページを注意深く読んでください。あなたがいるときは、そこに同じタイトルのすべての関連記事をチェックしてください---------------> – Tunaki

+1

[StringIndexOutOfBoundsException]の可能な複製(http://stackoverflow.com/questions/7505947/)ストリング・アウト・オブ・セクション) – ochi

答えて

0

一部の国では、50から65までの文字を取得するのに十分な長さがないようです。 まず、あなたのcountryArrayに含まれているものを確認してください。デバッガを使うだけです。

関連する問題