我正在尝试创建一个程序,打印出所有可能的字母组合" AUGC"。 输出真的会打印到txt文件,结果将是一个txt文件,如下所示: " AAA AAG AAC AAU AGA" 等等 这是我到目前为止的代码:
import java.io.*;
import java.util.*;
import java.lang.*;
public class Permute {
static String s = "ACGU";
static void permute(int level, String prefix) {
if (level == 0) {
String fileName = "out.txt";
PrintWriter outputStream = null;
try {
outputStream = new PrintWriter(fileName);
outputStream.println(prefix);
System.out.println(prefix);
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return;
}
for (int i = 0; i < s.length(); i++) {
permute(level - 1, prefix + s.charAt(i));
}
}
public static void main(String[] args) {
int k = 2;
permute(k, "");
}
}
目前程序正在将所有输出打印到控制台,并且只打印到txt文件的最后一个排列。 我希望它能将所有信息打印到两者。
非常感谢任何帮助
答案 0 :(得分:2)
您过早关闭OutputStream。由于您正在使用递归,因此将OutputStream作为参数传递给main方法中的permute方法。初始化流并在main方法中关闭它。
答案 1 :(得分:0)
我可能在这个问题上错了,但你不需要包括一个&#34; \ n&#34;作为outputStream.println(前缀);
的一部分所以看起来像 outputStream.println(前缀+&#34; \ n&#34;);
这会有所帮助,因为它似乎用最新的细节替换了这条线,而不是你想要寻找的新线。