用于循环生成不同的字母组合

时间:2012-12-23 08:53:50

标签: java for-loop

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)。我希望它能为ttttttt生成aaaaaa,aaaaaac,aaaaaag,aaaaaat。然而,组合产生停止在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();

}

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

1 个答案:

答案 0 :(得分:5)

看起来你没有冲洗FileWriter。其余的字符串几乎肯定在内存中仍然没有写入磁盘。确保在完成后刷新并关闭FileWriter

事实上,只有调用close方法才是必要的,因为它本身会调用flush,但是由于你因为缺乏同花而被抓住了,所以认为重要的是要强调这里...