将输出数据写入 TXT 文件时循环 Main 方法
Looping Main Method while Writing Output Data to TXT File
所以,我正在研究一个与遗传算法有关的 java 项目。
我有一个调用函数(我们称它为函数 1)的主要方法,该函数计算直到指定的迭代。我想 运行 main 方法 100 次并收集数据,所以我决定在我在 main 方法中调用的函数 1 中使用 FileWriter。
public static int Runcnt = 0;
static int o = 0;
public static File statText = new File("C:\Users\ShadyAF\Desktop\StatTest.txt");
public static void main(String [] args){
while(Runcnt <= 100)
{
final long startTime = System.nanoTime();
MainAlgorithm mA = new MainAlgorithm("config.xml");
mA.cMA();
final long duration = System.nanoTime() - startTime;
System.out.println(duration/1000000000 + " seconds");
o = 0;
}
上面的代码片段是我要循环的主要代码。 (函数 1)
System.out.println("best = "+Main.indx+" = "+Main.val);
System.out.println("max_cnt: " + Main.max_cnt);
try {
FileOutputStream is = new FileOutputStream(Main.statText);
OutputStreamWriter osw = new OutputStreamWriter(is);
Writer w = new BufferedWriter(osw);
w.write("#" + Main.Runcnt + " Best#: " + Main.indx + " BestScore: " + Main.val + " MaxCnt: " + Main.max_cnt + "\n");
w.close();
} catch (IOException e) {
System.err.println("Problem writing to file.");
}
上面的代码片段是主循环中的 mA.cMa() 函数。
我 运行 代码一段时间,程序似乎只在第一个循环中写入文件,而在其余循环中不做任何事情。
非常感谢任何帮助!
编辑:为什么我被否决了?至少留下有用的评论:/
你应该从头开始改变你的模式......无论如何你可以在你的 Main 中尝试这样的东西:
public static Path pathFile = Paths.get("C:\Users\..blah..\stats.txt");
然后在你的循环中使用
try {
String log = "#" + Main.Runcnt + " Best#: " + Main.indx + " BestScore: " + Main.val + " MaxCnt: " + Main.max_cnt + "\n";
Files.write(Main.pathFile, log.getBytes(), Files.exists(Main.pathFile) ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
} catch (IOException e) {
// exception handling
}
它不是那么有效,特别是在 lot 记录的情况下,但您编写的整个代码也应该需要强大的重构:)
所以,我正在研究一个与遗传算法有关的 java 项目。
我有一个调用函数(我们称它为函数 1)的主要方法,该函数计算直到指定的迭代。我想 运行 main 方法 100 次并收集数据,所以我决定在我在 main 方法中调用的函数 1 中使用 FileWriter。
public static int Runcnt = 0;
static int o = 0;
public static File statText = new File("C:\Users\ShadyAF\Desktop\StatTest.txt");
public static void main(String [] args){
while(Runcnt <= 100)
{
final long startTime = System.nanoTime();
MainAlgorithm mA = new MainAlgorithm("config.xml");
mA.cMA();
final long duration = System.nanoTime() - startTime;
System.out.println(duration/1000000000 + " seconds");
o = 0;
}
上面的代码片段是我要循环的主要代码。 (函数 1)
System.out.println("best = "+Main.indx+" = "+Main.val);
System.out.println("max_cnt: " + Main.max_cnt);
try {
FileOutputStream is = new FileOutputStream(Main.statText);
OutputStreamWriter osw = new OutputStreamWriter(is);
Writer w = new BufferedWriter(osw);
w.write("#" + Main.Runcnt + " Best#: " + Main.indx + " BestScore: " + Main.val + " MaxCnt: " + Main.max_cnt + "\n");
w.close();
} catch (IOException e) {
System.err.println("Problem writing to file.");
}
上面的代码片段是主循环中的 mA.cMa() 函数。
我 运行 代码一段时间,程序似乎只在第一个循环中写入文件,而在其余循环中不做任何事情。
非常感谢任何帮助!
编辑:为什么我被否决了?至少留下有用的评论:/
你应该从头开始改变你的模式......无论如何你可以在你的 Main 中尝试这样的东西:
public static Path pathFile = Paths.get("C:\Users\..blah..\stats.txt");
然后在你的循环中使用
try {
String log = "#" + Main.Runcnt + " Best#: " + Main.indx + " BestScore: " + Main.val + " MaxCnt: " + Main.max_cnt + "\n";
Files.write(Main.pathFile, log.getBytes(), Files.exists(Main.pathFile) ? StandardOpenOption.APPEND : StandardOpenOption.CREATE);
} catch (IOException e) {
// exception handling
}
它不是那么有效,特别是在 lot 记录的情况下,但您编写的整个代码也应该需要强大的重构:)