java - 使用代码不断使索引 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;
}
解决方案
如果文件“Assignment1CData.txt”的单行中没有逗号,则结果数组“trim”将在索引 0 处只有一个元素。如果是这种情况,当您尝试访问索引 1 时会产生错误一个元素数组。
推荐阅读
- javascript - 如何使用 django 只显示一些选项并选择?
- rx-java2 - 在 RxAndroidBle 流中抛出 UndeliverableException
- javascript - 如何在chart.js中显示两个数组之间的减法结果?
- sql - 连接所有组合
- c++ - 在迭代它时删除 std::shared_ptr 的 std::vector 中的最后一个元素会导致分段错误
- javascript - 比较数组的日期项并找到最大的
- android - 默认视图卡在顶部,无论如何要删除它
- javascript - 如何在 reactjs 应用程序中找到带有酶的元素?
- windows - 在 FOR 语句中的变量上使用子字符串
- java - 是否可以使用 Gradle 5 为 Java 6 编译和测试 Groovy 源文件?