为什么我得到StringIndexOutOfBoundsException:字符串索引超出范围:65

时间:2016-04-27 21:37:08

标签: java substring outofrangeexception shellsort

我正在使用一个shellort从输入文件中查找人口。

这是我的代码:

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)

如果我将50改为0就可以了,但我需要从50点开始。 为什么我会收到此错误?

1 个答案:

答案 0 :(得分:1)

似乎有些国家没有足够的时间来从50到65之间获得字符。 首先,您应该检查countryArray包含的内容。只需使用debuger。