如何将书分成章节

时间:2015-04-18 03:43:21

标签: java arrays

我正在尝试将一本书分成章节,这本书是在一个文本文件中。到目前为止,我尝试过一种效果不佳的方法。

目前我将每个章节存储在一个String Array元素中,所以第一章将在元素1等中。问题是,它给了我一个outofbound错误,这里是代码:

public void separateChapters(String[] book){
    int x = 2;
    int y = 1;
    String temp = null;
    String ch = "2";
    while (y < 100){ 
        while (!verses[x].contains(("CHAPTER " + ch))) {//+ Integer.toString(x)

            System.out.println(x);
            System.out.println(y);

            temp = verses[x]+temp;
            chapters[y] = verses[x]+temp; //chapters is a global variable

            x++;
        } 
        y++;
        int toIncrement = Integer.parseInt(ch); //jump to next chapter
        toIncrement++;
        ch = Integer.toString(toIncrement);
    }
    System.out.println(chapters[1]);


}

此方法在每个元素中正确存储章节,但在将第48章添加到其元素时,我得到一个ArrayIndexOutOfBoundsException。

我知道我的方法不太好,如果有人可以帮我找出更有效的方法,或者纠正这个方法,我将非常感激。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我很快尝试了[cache&#; s]方法并且它工作得很好,我设法将字符串分成章节。

public static void main(String[] args) throws IOException {
    // TODO code application logic here
    String book;
    book= readFile("Book.txt",Charset.defaultCharset());

    String[] ch = book.split("CHAPTER");

    System.out.println(ch[2]); //prints chapter two
}
static String readFile(String path, Charset encoding) 
    throws IOException 
{
    byte[] encoded = Files.readAllBytes(Paths.get(path));
    return new String(encoded, encoding);
}

非常感谢您的帮助。

答案 1 :(得分:0)

  

&#34;所以第一章将在第1和第34页中   &#34;将第48章添加到其元素中我得到一个ArrayIndexOutOfBoundsException。&#34;

Java中的数组从索引0开始。String[48]在索引48处没有元素,最后一个是47。

所以你需要将第一章放在第0位(首选),或者将数组放大一个元素。