0
static void generator7(String fileName) throws IOException {

    FileWriter fw = new FileWriter(fileName);
    String[] list = { "a", "b", "c", "d" };

    for (int o = 0; o < list.length; o++) {
        for (int n = 0; n < list.length; n++) {
            for (int m = 0; m < list.length; m++) {
                for (int l = 0; l < list.length; l++) {
                    for (int k = 0; k < list.length; k++) {
                        for (int j = 0; j < list.length; j++) {
                            for (int i = 0; i < list.length; i++) {
                                fw.append(list[i] + list[j] + list[k]
                                        + list[l] + list[m] + list[n]
                                        + list[o]);
                                fw.append("\n");

                            }
                        }

                    }
                }
            }
        }
    }

}

我有这段代码用来生成不同的字母组合(a、b、c、d)。我希望它能够生成 aaaaaaa、aaaaaac、aaaaaaag、aaaaaaat 到 tttttt。然而,产生的组合在 tttttgt 处停止。没有异常抛出。我不知道我的代码的哪一部分出错了。请帮忙。

static void generator7(String fileName) throws IOException {

FileWriter fw = new FileWriter(fileName);
String[] list = { "a", "b", "c", "d" };

for (int o = 0; o < list.length; o++) {
    for (int n = 0; n < list.length; n++) {
        for (int m = 0; m < list.length; m++) {
            for (int l = 0; l < list.length; l++) {
                for (int k = 0; k < list.length; k++) {
                    for (int j = 0; j < list.length; j++) {
                        for (int i = 0; i < list.length; i++) {
                            fw.append(list[i] + list[j] + list[k]
                                    + list[l] + list[m] + list[n]
                                    + list[o]);
                            fw.append("\n");

                        }
                    }

                }
            }
        }
    }
}
fw.flush();
fw.close();

}

编辑:第一个代码是问题所在。第二个代码是解决方案。

4

1 回答 1

5

看起来你没有冲洗FileWriter. 剩下的字符串几乎肯定还在内存中,还没有写入磁盘。确保在FileWriter完成后冲洗并关闭它。

事实上,只调用该close方法是绝对必要的,因为它会调用flush自己,但是由于您被缺乏刷新所吸引,认为这里强调一下很重要......

于 2012-12-23T08:58:22.533 回答