2017-10-19 18 views
1

私は、殺人の時間を判断するためのプログラムを作った。私が今持っているコードは、ターミナルに必要なものを正確に表示します。私はそれをファイルに印刷します。しかし、私はSystem.setOut()をこの割り当てに使用するはずがありません。私はファイルにの代わりにを印刷することになっています。端末ではなくファイルに出力する

私は単純なStringをファイルに書き込む方法を知っていますが、ここで問題となっているのは、私の結果を端末に印刷する方法があります。これらのメソッドをファイルに印刷する方法代わりに。

これは私の2つの印刷方法と主な方法です。

印刷2Dアレイ法:

public static void printArray2d(String[][] array2d){ 
    for(int i = 0; i < array2d.length; i++){ 
     for(int j = 0; j < array2d[i].length; j++){ 
      System.out.print(array2d[i][j]); 
     } 
     System.out.print("\n"); 
    } 
} 

印刷完全なレポート方法:

public static void printReport(String[][] array2d, double arrayMin, double arrayMax){ 
    System.out.println("Time since death probability distribution"); 
    double hours = (arrayMax-arrayMin)/(array2d.length-1); 
    System.out.printf("Each line corresponds to approximately %.2f hours\n", hours); 
    System.out.printf("%.2f hours\n", arrayMin); 
    printArray2d(array2d); 
    System.out.printf("%.2f hours\n", arrayMax); 
} 

主な方法:

public static void main(String args[]) { 

    double[] array = cooldownSamples(27, 1000); 
    double[] counts = countsFromArray(array, 20); 
    String[][] array2d = array2dFromCounts(counts); 
    printReport(array2d, minFromArray(array), maxFromArray(array)); 
} 

必要に応じてコード全体を投稿できます。

私は以前同様の質問があることを知っていますが、誰も私に必要なヘルプを与えてくれませんでした。私はまた、それらのスレッドで与えられた答えのいずれかにフォローアップの質問をするのに十分な評判を持っていないので、私は新しい質問を余儀なくされました。

ご協力いただきありがとうございます!

追加情報:

私は私がSystem.setOut()を使用することになっていないよ言ったにもかかわらず、私は運がなくて、this threadに与えられた方法と回答を使用して試してみました。これを行う最も効率的な方法がSystem.setOut()経由である場合は、代替方法を探しているにもかかわらず、これを実装して自分のコードで動作させる方法を理解できるようにしてください。

+0

'your_process'がコンソールに出力した場合、' your_process> outfile'で簡単に出力することができます。 – Seelenvirtuose

+0

私はそれを取得しません。 "System.setOut()"の問題は何ですか? "端末の代わりにファイルに出力するように頼みます。" 'システム。あなたがそれをファイルにリダイレクトした場合、これは正しいでしょう、それは端末をまったく通過しません。 – AxelH

+0

上記の出力をリダイレクトすることができます。System.out + System.setOutを使用することもできますし、すべてのSystem.outステートメントを変更して別のライター/ PrintStreamを使用することもできます。 – matt

答えて

1

これは本当に簡単です:今、あなたは(静的な)オブジェクトSystem.outを使ってすべての印刷をしています。このオブジェクトにはprint、printlnなどのメソッドがあります。代わりにSystem.outを使用しての

することは、あなたがこれで全部です

PrintWriter writer = new PrintWriter("whatever.txt"); 
writer.println("whatever"); 
writer.close(); 

のように、そのオブジェクトのPrintWriterと呼び出し方法を言うのインスタンスを作成します。またはさらに簡単に、PrintStreamオブジェクトをインスタンス化することができます。で...

PrintStream out = System.out // or new PrintStream("filename"); 
doStuff(out); 

:: - またはどこか他の

public void doStuff(PrintStream out) { 
    out.println... 

そして今、あなたは一つの中心あなたがSystem.outに印刷する場合は、あなたが決めた場所を持っているあなたは、その後のようなことを行うことができ!

+0

私は 'System.out'文を文字通り' writer.print'文に変更することができますか?もしそうなら、それは本当にシンプルです。 –

+0

私の更新を見てください(実際には標準出力またはファイルを出力先として使用する場合はPrintStreamを使用してください)。 – GhostCat

+0

ありがとうございました。あなたの答えを受け入れました。 –

関連する問題