首页 > 解决方案 > 使用代码不断使索引 1 超出长度 1 错误的范围

问题描述

不确定文本文件中的间距是否导致错误或我没有看到的其他内容。就像标题所说的那样,我一直让数组索引超出范围异常。我不知道为什么,任何帮助表示赞赏。

为了更好地参考(我将文本文件复制并粘贴到 Pastebin 中):https ://pastebin.com/reYraNpY

public static void main(String[] args) throws FileNotFoundException
 {
   Map<String, Integer> sort = storeText();
   System.out.println("State: \t\t  Population:");
   for (Map.Entry<String, Integer> key : sort.entrySet())
   {
    System.out.printf("%-20s %d%n", key.getKey(), key.getValue());     
   }   
 }

public static Map<String, Integer> storeText() throws FileNotFoundException
{
   Map<String, Integer> map = new HashMap<String, Integer>();
   
   FileInputStream file = new FileInputStream("Assignment1CData.txt");
   Scanner input = new Scanner(file);
   while (input.hasNextLine())
    {
       String[] trim = input.nextLine().split(",");
       String[] trim2 = trim[1].split("   ");
       String state = trim2[0].replace(" ", ""); 
       Integer totalPopulation = Integer.parseInt(trim2[1]);

       map.put(state, map.getOrDefault(state, map.getOrDefault(state, 0) + totalPopulation));  
    }     
  return map;      
}

标签: java

解决方案


如果文件“Assignment1CData.txt”的单行中没有逗号,则结果数组“trim”将在索引 0 处只有一个元素。如果是这种情况,当您尝试访问索引 1 时会产生错误一个元素数组。


推荐阅读