我正在尝试将一本书分成章节,这本书是在一个文本文件中。到目前为止,我尝试过一种效果不佳的方法。
目前我将每个章节存储在一个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。
我知道我的方法不太好,如果有人可以帮我找出更有效的方法,或者纠正这个方法,我将非常感激。
提前致谢。
答案 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位(首选),或者将数组放大一个元素。