将输出数据写入 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 记录的情况下,但您编写的整个代码也应该需要强大的重构:)