텍스트 파일에 쓰려고 시도하는 문자열 배열 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("");
}
http://www.codingeek.com/ 당신은 중첩 루프를 필요로 방문 할 수 있습니다 .. 당신이 문자열을하거나 당신이 할 수있는 모든 시간을 종료 인덱스를 증가 총 2 개의 루프). 바깥 쪽 루프는 배열의 모든 문자열 인 toFile을 반복합니다.내부 루프는 문자를 250으로 계산합니다. – markspace
@markspace 배열에는 9 개의 문자열 만 포함됩니다. 그 중 9 개는 길이에 대해 몇 가지만 확인하면됩니다. – TehNoiseBomb
여전히 두 개의 루프가 필요합니다. 문자열을 요청 된 길이로 분할하는 것 외에는 아무 것도 수행하지 않는 방법을 시도해보십시오. 문제를 더 작은 것으로 분해하는 데 도움이 될 것입니다. 그런 다음 해당 메서드를 호출해야하는 문자열을 호출합니다. – markspace