DASUuu? 2021-03-26 18:31 采纳率: 0%
浏览 26

java split越界问题

package zuoye13;

import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class zhuanhuan {

    private static final List<List<String>> province = new ArrayList<>();

    private static final List<List<String>> sortProvince = new ArrayList<>();

    private static String result;

    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        String[] split = line.split(" ");
        readFileByInFileName(split[0]);
        if (split.length == 3) {
            //鎸囧畾浜嗚鐨勭渷浠藉悕
            String[] strings = result.split("\n");
            StringBuilder builder = new StringBuilder();
            boolean flag = false;
            for (String string : strings) {
                int indexOf = string.indexOf("\t");
                String substring = indexOf > 0 ? string.substring(0, indexOf) : string;
                substring = substring.replace("\"", "").trim();
                if (substring.equals(split[2])) {
                    builder.append(string).append("\n");
                    flag = true;
                } else if (flag) {
                    break;
                }
            }
            writeFileByFileName(split[1], builder.toString());
        } else {
            writeFileByFileName(split[1]);
        }

    }

    private static void readFileByInFileName(String fileName) {
        //璇诲彇鏂囦欢
        try (BufferedReader reader = new BufferedReader(
                new FileReader("/Users/rayss/IdeaProjects/JavaCodeReasearch/src/test/java/com/cloud/MainTest/meituan/" + fileName))) {
            //鍐欏嚭鏂囦欢
            String line;
            //鏍囪涓嬩釜浣嶇疆鏄笉鏄渷浼�
            //涓嬩釜鏄渷浼氱殑璇濆皢浼氶噸鏂板垱寤轰竴涓柊鐨勯泦鍚�
            boolean flag = true;
            List<String> element = new ArrayList<>();
            //杩欎釜寰幆灏辨槸鑾峰彇鎵�鏈変俊鎭�
            while ((line = reader.readLine()) != null) {
                if (flag) {
                    flag = false;
                }
                //杩欎釜灏辨槸鍒ゆ柇鏄惁鏄渷浼氱殑閫昏緫
                if ("".equals(line.trim())) {
                    province.add(element);
                    element = new ArrayList<>();
                    flag = true;
                    continue;
                }
                element.add(line);
                element.add("\n");
            }
        } catch (IOException ignored) {
        }
        //缁欐墍鏈夌渷浼氬紑澶存坊鍔犵渷鍚�
        province.forEach(zhuanhuan::appendChar);
        province.forEach(list -> list.add(list.size() / 2 + ""));
        sort();
        System.out.println(sortProvince);
        result = province.toString().replace("]", "").replace("[", "").replace(",", "");
    }

    private static void sort() {
        for (int i = 0; i < province.size(); i++) {
            int minIndex = i;
            for (int j = i + 1; j < province.size(); j++) {
                int i1 = Integer.parseInt(province.get(minIndex).get(province.get(minIndex).size() - 1).trim());
                int j1 = Integer.parseInt(province.get(j).get(province.get(j).size() - 1).trim());
                if (j1 < i1) {
                    minIndex = j;
                }
            }
            sortProvince.add(province.get(minIndex));
        }
    }

    private static void writeFileByFileName(String outFileName) {

        try (BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/rayss/IdeaProjects/JavaCodeReasearch/src/test/java/com/cloud/MainTest/meituan/" + outFileName))) {
            //鍐欏嚭鏂囦欢
            writer.write(result);
            //灏嗗唴瀛樹腑鐨勬暟鎹埛鏂板埌纾佺洏
            writer.flush();
        } catch (IOException ignored) {
        }
    }

    private static void writeFileByFileName(String outFileName, String content) {

        try (BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/rayss/IdeaProjects/JavaCodeReasearch/src/test/java/com/cloud/MainTest/meituan/" + outFileName))) {
            //鍐欏嚭鏂囦欢
            writer.write(content);
            //灏嗗唴瀛樹腑鐨勬暟鎹埛鏂板埌纾佺洏
            writer.flush();
        } catch (IOException ignored) {
        }
    }

    private static void appendChar(List<String> list) {
        //鐪佷細鍚�
        String head;
        //浠庝綍澶勫紑濮嬬殑鍙橀噺
        int i;
        if (list.get(0).trim().equals("")) {
            head = list.get(1);
            i = 2;
        } else {
            i = 1;
            head = list.get(0);
        }

        //閬嶅巻娣诲姞
        for (; i < list.size(); i++) {
            String temp;
            if (!(temp = list.get(i)).trim().equals("")) {
                list.remove(i);
                list.add(i, head + "\t" + temp);
            }
        }
        //绉婚櫎鏈�寮�濮嬬殑鐪佷細
        list.remove(0);
    }

 

 

出现报错Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
    at zuoye13.zhuanhuan.main(zhuanhuan.java:39)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 18:07
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?