Java如何读取冒号分隔的州名文件并存入52x2二维字符串数组
问题原因
你现在写的双层for循环加input2.next()的逻辑,会把al:Alabama这种整行未拆分的内容直接当作单个字符串存入数组,完全没有处理冒号分割的逻辑,而且外层while循环和内层行遍历的逻辑是冗余的,运行时还可能出现重复赋值的问题。
修改后的实现代码
String[][] states = new String[52][2]; int row = 0; // 逐行读取文件内容,直到读完或者数组填满 while (input2.hasNextLine() && row < states.length) { String line = input2.nextLine().trim(); // 跳过空行避免报错 if (line.isEmpty()) { continue; } // 按冒号分割,最多拆成2段,避免州名里含冒号时出问题 String[] parts = line.split(":", 2); // 0列存缩写,1列存全称 states[row][0] = parts[0].trim(); states[row][1] = parts[1].trim(); // 打印验证 System.out.printf("缩写:%s,全称:%s%n", states[row][0], states[row][1]); row++; }
注意事项
- 如果你的文件里空行较多,可以自行调整空行判断的逻辑
- 代码里限制了
row < states.length是为了避免文件内容超过52行时出现数组越界异常
内容的提问来源于stack exchange,提问作者user16131306
相关产品推荐
相关产品推荐

