【发布时间】:2014-09-11 01:35:10
【问题描述】:
我有一个字符串数组toFile[],我正试图将其写入文本文件。在测试时,我被提醒如果刺痛到达窗口的边界,记事本不会将字符串换行到下一行。作为一个完美主义者,我想将字符串拆分为长度为 250 个字符的子字符串,然后将每个子字符串写入文件,在每个子字符串之后插入一个新行。
在测试时,我遇到并且似乎无法解决的问题是,我的程序将通过循环运行一次,然后失败并出现错误。
输出和错误示例:
toFile[2].length = 2432
temp.length = 250
split = 250
iLength = 2182
temp.length = 0
split = 500
iLength = 1932
java.lang.StringIndexOutOfBoundsException: String index out of range: -250
我的代码:
System.out.println("toFile[2].length = "+Integer.toString(toFile[2].length()));
System.out.println("");
if(toFile[2].length()>250){
int iLength=toFile[2].length(), split = 0;
while(iLength>250){
String temp = toFile[2];
temp = temp.substring(split, 250);
System.out.println("temp.length = "+Integer.toString(temp.length()));
bw.write(temp);bw.newLine();
split=split+250;
System.out.println("split = "+Integer.toString(split));
iLength=iLength-250;
System.out.println("iLength = "+Integer.toString(iLength));
System.out.println("");
}
bw.write(toFile[2].substring(split));
}else{bw.write(toFile[2]);bw.newLine();}
bw.newLine();
我也试过这个 while 循环,它贯穿整个字符串,但仍然只将字符串写入一行:
int iLength=toFile[2].length(), start = 0;
String temp = toFile[2];
while(iLength>250){
bw.write(temp,start,250);
start=start+250;
System.out.println("start = "+Integer.toString(start));
iLength=iLength-250;
System.out.println("iLength = "+Integer.toString(iLength));
System.out.println("");
}
【问题讨论】:
-
你需要一个嵌套循环(所以总共两个循环)。外部循环遍历数组 toFile 中的所有字符串。内部循环将字符计数为 250。
-
@markspace 该数组仅包含 9 个字符串。在这 9 个中,我只需要检查一些长度即可。
-
你仍然需要两个循环。尝试创建一个除了将字符串拆分为请求的长度之外什么都不做的方法。它将帮助您将问题分解为较小的问题。然后为您需要检查的字符串调用该方法。
标签: java string text while-loop bufferedwriter