当我运行程序时,它会创建文件,但它会为每个文件循环文件内容3次而不是循环一次。我相信我的for循环是如何设置的。
如何更正以下程序,为一个数组fileNameAry
中的每个项目创建一个文件,并使用另一个数组fileContentAry
中的内容填充新文件的第一行,每个文件后的其他行(每个文件4行)。
确保每个文件只需要4行的最佳方法是什么?如果这个代码可以更好地组织或更有效地循环,我将如何去做?
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package createfileloop;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
/**
*
* @author DeveloperJC
*/
public class CreateFileLoop {
public static void main(String[] args) throws IOException{
String[] fileNameAry = new String[]{
"FirstFile.txt","SecondFile.txt","ThirdFile.txt"
};
String[] fileContentAry = new String[]{
"First File","Second File","Third File"
};
int i,k;
for(i=0; i<fileNameAry.length; i++){
PrintStream fileStream = new PrintStream(new File("C:/Users/DeveloperJC/Desktop/"+fileNameAry[i]));
for(k=0; k<fileContentAry.length; k++){
fileStream.println("docname="+fileContentAry[k]);
fileStream.println("2ndLine= Second Line");
fileStream.println("3rdLine= Third Line");
fileStream.println("4thLine= Fourth Line");
}
}
}
}
答案 0 :(得分:1)
不要运行2 for
循环,它会产生问题。
因为string array
具有相同的size
,所以使用one for
循环和
使用correspodning element
名称访问array
。
请参阅下面的修改后的代码。希望它能解决你的问题。
for(i=0; i<fileNameAry.length; i++){
PrintStream fileStream = new PrintStream(new File("C:/Users/DeveloperJC/Desktop/"+fileNameAry[i]));
fileStream.println("docname="+fileContentAry[i]);
fileStream.println("2ndLine= Second Line");
fileStream.println("3rdLine= Third Line");
fileStream.println("4thLine= Fourth Line");
}
答案 1 :(得分:1)
对于每个文件,您在for(k=0; k<fileContentAry.length; k++){
3次上进行迭代,并且每次都在执行:
fileStream.println("docname="+fileContentAry[i]);
fileStream.println("2ndLine= Second Line");
fileStream.println("3rdLine= Third Line");
fileStream.println("4thLine= Fourth Line");
3次迭代*每行4行=打印12行。