2015-08-14 1 views
0

Я пытаюсь создать программу, которая выводит все возможные комбинации букв «AUGC». Выход действительно печать в текстовый файл, и результат был бы TXT файл с чем-то вроде этого: «AAA AAG AAC ААУ AGA» и т.д. Вот код, который я до сих пор:Выход не печатается в txt-файл Java

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-файл. Я бы хотел, чтобы он распечатывал всю информацию обоим.

Любая помощь будет принята с благодарностью

+1

Вы переписываете файл каждый раз, когда вызывается перестановка. Посмотрите на javadoc для [PrintWriter] (http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html) – Sid

+1

Держите PrintWriter открытым, пока не закончите писать все перестановки. – Sid

ответ

0

я, может быть неправильно на этом, но вы не должны включать в себя «\ п», как часть вашего outputStream.println (префикс);

так, что это выглядит как outputStream.println (prefix + "\ n");

Это поможет, поскольку это заменяет линию новейшими деталями, а не новой строкой, которую вы, похоже, ищете.

+0

Вы ошибаетесь в этом вопросе. Проверьте Javadoc. – EJP

+0

Почему? lol, похоже, каждый раз, когда они запускают блок catch try, он заменяет старые данные новым, поскольку файлы автоматически не используют следующую строку, не сообщая. объяснение было бы очень оценено – Shieldsy147

+0

Итак, вы не [искали] (http://docs.oracle.com/javase/7/docs/api/java/io/PrintWriter.html#println (java.lang.String)): «Распечатывает строку, а затем завершает линию». Поэтому добавление другого '' \ r "' просто добавляет терминатор строки, т. Е. Пустую строку. И это не решает эту проблему. – EJP

2

Вы закрываете OutputStream преждевременно. Поскольку вы используете рекурсию, передайте OutputStream в качестве параметра для перестановки метода из основного метода. Инициализируйте поток и закройте его в основном методе.