2016-04-27 60 views
-4

我正在使用shellort从输入文件中查找总体。为什么我得到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) 

如果我改变50-0它的工作原理,但我需要从点50取。 为什么我得到这个错误?

+2

因为你没有学会制作[mcve]。仔细阅读该页面。当你有,检查所有相关的职位相同的标题那里---------------> – Tunaki

+1

可能重复的[StringIndexOutOfBoundsException](http://stackoverflow.com/questions/7505947/的StringIndexOutOfBoundsException) – ochi

回答

0

似乎有些国家没有足够的长度来获得从50到65的字符。 首先,你应该检查你的countryArray包含什么。只需使用debuger。

相关问题