|
- package bianma;
- import java.io.*;
- import java.util.HashMap;
- public class P2 {
- public static void main(String[] args) throws IOException {
- HashMap<String,String> map = new HashMap<>();
- BufferedReader br = new BufferedReader(new FileReader("paixu.txt"));
- BufferedWriter bw = new BufferedWriter(new FileWriter("paixu2.txt"));
- String line;
- while((line = br.readLine())!=null){
- // String[] arr =new String[3];
- arr = line.split("\\.");
- // System.out.println(arr[0]);
- // System.out.println(arr[1]);
- map.put(arr[0],arr[1]);
- // System.out.println(map);
- }
- for(String key : map.keySet()){
- String value = map.get(key);
- System.out.println(value);
- line = key + "." + value;
- bw.write(line);
- bw.newLine();//写换行
- }
- bw.close();
- br.close();
- }
- }
复制代码 报错Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
报错行一直显示是“map.put(arr[0],arr[1])”这一行
如果在此行之前加上“System.out.println(arr[1]);”,报错的就是这行
把“map.put(arr[0],arr[1])”注释掉程序正常运行(没有结果)
请问这是什么问题呀
arr = line.split("\\.");
map.put(arr[0],arr[1]);
这两行,你想下,第一行是将读到的一行内容按点号拆分,第二行是使用拆分的两个数据。
那么,如果文件有空行呢,或者这行内容没有点号呢,如果遇到这样的内容,当然下标越界,因为没有 arr[1]
建议在map.put前面增加检查,如果arr的size是2才读取,其他情况跳过,或者针对性的处理下应该就可以了
|
|