java.lang.StringIndexOutOfBoundsException: String index out of range: -1

在这里插入代码片

package com.itheima.d3_char_buffer;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class BufferedCharTest3 {
public static void main(String[] args) {
try(
//1、创建缓冲字符输入流管道与源文件相同
BufferedReader br = new BufferedReader(new FileReader(“src/csb.txt”));

            BufferedWriter bw = new BufferedWriter(new FileWriter("src/new.txt"));
    ) {
                 //2.定义一个List集合存储每行内容
        List data = new ArrayList<>();
        //3.定义循环,按照行读取文章
        String line;
        while ((line = br.readLine()) != null) {
            data.add(line);
        }
        System.out.println(data);
        //4.排序
        //自定义排序规则
        List sizes = new ArrayList<>();
        Collections.addAll(sizes,"一","二","三","四","五","六","柒","八","九","十","十一");

        Collections.sort(data, new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                //o1  八。。。
                //o2  柒。。。
                return sizes.indexOf(o1.substring(0,o1.indexOf(".")))
                        - sizes.indexOf(o2.substring(0,o2.indexOf(".")));
            }
        });
        System.out.println(data);

        //6.遍历集合中的每行文章写出去,且要换行
        for (String datum : data) {
            bw.write(datum);
            bw.newLine();
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

控制台输出这个
[一.先帝创业未半而中道崩殂,今天下三分,益州疲弊,此诚危急存亡之秋也。然侍卫之臣不懈于内,忠志之士忘身于外者,盖追先帝之殊遇,欲报之于陛下也。诚宜开张圣听,以光先帝遗德,恢弘志士之气,不宜妄自菲薄,引喻失义,以塞忠谏之路也。, 三.宫中府中,俱为一体;陟罚臧否,不宜异同。若有作奸犯科及为忠善者,宜付有司论其刑赏,以昭陛下平明之理,不宜偏私,使内外异法也。, , 五.侍中、侍郎郭攸之、费祎、董允等,此皆良实,志虑忠纯,是以先帝简拔以遗陛下。愚以为宫中之事,事无大小,悉以咨之,然后施行,必能裨补阙漏,有所广益。, , 四.将军向宠,性行淑均,晓畅军事,试用于昔日,, 八.先帝称之曰能,是以众议举宠为督。愚以为营中之事,悉以咨之,必能使行阵和睦,优劣得所。, , 陆.亲贤臣,远小人,此先汉所以兴隆也;亲小人,远贤臣,此后汉所以倾颓也。先帝在时,每与臣论此事,未尝不叹息痛恨于桓、灵也。侍中、尚书、长史、参军,此悉贞良死节之臣,愿陛下亲之信之,则汉室之隆,可计日而待也。, 柒.臣本布衣,躬耕于南阳,苟全性命于乱世,不求闻达于诸侯。先帝不以臣卑鄙,猥自枉屈,三顾臣于草庐之中,咨臣以当世之事,由是感激,遂许先帝以驱驰。后值倾覆,受任于败军之际,奉命于危难之间,尔来二十有一年矣。, 十一.先帝知臣谨慎,故临崩寄臣以大事也。受命以来,夙夜忧叹,恐托付不效,以伤先帝之明;故五月渡泸,深入不毛。今南方已定,兵甲已足,当奖率三军,北定中原,庶竭驽钝,攘除奸凶,兴复汉室,还于旧都。此臣所以报先帝而忠陛下之职分也。至于斟酌损益,进尽忠言,则攸之、祎、允之任也。, , 九.愿陛下托臣以讨贼兴复之效,不效,则治臣之罪,以告先帝之灵。若无兴德之言,则责攸之、祎、允等之慢,以彰其咎;陛下亦宜自谋,以咨诹善道,察纳雅言,深追先帝遗诏。臣不胜受恩感激。今当远离,临表涕零,不知所言。]
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1967)
at com.itheima.d3_char_buffer.BufferedCharTest3$1.compare(BufferedCharTest3.java:35)
at com.itheima.d3_char_buffer.BufferedCharTest3$1.compare(BufferedCharTest3.java:30)
at java.util.TimSort.countRunAndMakeAscending(TimSort.java:360)
at java.util.TimSort.sort(TimSort.java:220)
at java.util.Arrays.sort(Arrays.java:1512)
at java.util.ArrayList.sort(ArrayList.java:1454)
at java.util.Collections.sort(Collections.java:175)
at com.itheima.d3_char_buffer.BufferedCharTest3.main(BufferedCharTest3.java:30)

Process finished with exit code 0

你可能感兴趣的:(笔记,java,开发语言)