2011-04-15 52 views
0

我有一個代碼可以產生組合並打印到屏幕上,我想將它打印到一個文件中,但是我不知道把PrintStream對象放在哪裏可以訪問我想要打印的字符串。在哪裏把PrintStream對象打印出一個變量java

public class Main { 
public static void main(String args[]) { 
    brute("12345", 5, new StringBuffer()); 
} 
static void brute(String input, int depth, StringBuffer output) { 
    if (depth == 0) { 
     System.out.println(output); 
    } else { 
     for (int i = 0; i < input.length(); i++) { 
      output.append(input.charAt(i)); 
      brute(input, depth - 1, output); 
      output.deleteCharAt(output.length() - 1); 
      } 
     } 
    } 
} 

感謝,

+0

你的printstream在哪裏? – Shrinath 2011-04-15 02:08:11

+0

我一直在試圖把它放在每一個地方,在我看來,它應該在for語句之後,也許我會走。 – evanlivingston 2011-04-15 02:10:23

+0

@ Hovercraft的建議很好:) – Shrinath 2011-04-15 02:57:11

回答

2

只需將PrintStream作爲brute()方法的參數之一,並將它傳遞給遞歸調用即可。然後在你的主要你只需要:

FileOutputStream fileOut = new FileOutputStream("output.txt"); 
brute("12345", 5, new StringBuffer(), new PrintStream(fileOut)); 
1

一種方法是有一個靜態變量的PrintWriter你的方法寫,而不是System.out的。在調用遞歸方法之後,確保在main方法的finally塊中關閉變量。