将java输出写入控制台和文本文件的简单方法?

时间:2013-10-01 04:13:56

标签: java file filewriter

所以我是一个相当大的java菜鸟,我的考试即将开始,并且整个星期都在练习。我的进展缓慢但稳定。我正在做的一个练习要求我将数组计算的输出打印到控制台并使用控制台输出和相同的格式创建文件temperature.txt

我已经想出如何能够做到这一点或者其他但是我很难做到这两点(记住缓慢而稳定的学习者)。是否有一个更简单的初学者方法要记住?

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DecimalFormat;

public class Temperature {

    public static void main(String[] args) throws IOException{ 
        double[] temps = {100, 98, 80.5, 90.2, 99.4, 89.1};
        MaxMin(temps);

    }

    public static void MaxMin(double[]temps) throws IOException{
        FileWriter fwriter = new FileWriter("Temperatures.txt", true);
        PrintWriter outputfile = new PrintWriter(fwriter);
        double min= Double.MAX_VALUE;
        double max= Double.MIN_VALUE;
        double sum = 0;

        DecimalFormat formatter = new DecimalFormat("0.0");

        for(int i = 0;i<temps.length;i++){
            sum += temps[i];
            if(temps[i] > max){
                max = temps[i];
            }
            if(temps[i]< min){
                min = temps[i];
            }
        }

        double avg = sum / temps.length;
        outputfile.println("Average Temp: " + formatter.format(avg));
        outputfile.println("Maximum Temp: " + formatter.format(max));
        outputfile.println("Minimum Temp: " + formatter.format(min));
        outputfile.close();
    }
}

上面的内容打印文本,但控制台上没有任何内容。

编辑:在最后添加3个System.out.println语句以满足这两个要求是否可以接受?像这样:

System.out.println("Average Temp: " + formatter.format(avg));
System.out.println("Maximum Temp: " + formatter.format(max));
System.out.println("Minimum Temp: " + formatter.format(min));

outputfile.println("Average Temp: " + formatter.format(avg));
outputfile.println("Maximum Temp: " + formatter.format(max));
outputfile.println("Minimum Temp: " + formatter.format(min));
outputfile.close();

5 个答案:

答案 0 :(得分:4)

Commons IO有一个TeeOutputStream,可以同时将所有内容写入两个输出。

答案 1 :(得分:3)

您最简单的方法是创建output方法:

private void output(final String msg, PrintStream out1, PrintWriter out2) {        
    out1.println(msg);
    out2.println(msg);
}

并像这样使用它:

output("your message", System.out, outputfile);

答案 2 :(得分:1)

首先,如果控制台和文件之间的格式相同很重要,那么我会将所有输出保存到单个String,嵌入'\n'字符等,以及然后只需一次打印/写入String

我不知道是否有同时写入文件和控制台的方法。你总是可以写一个能完成这两件事的功能。

答案 3 :(得分:1)

Log4j 是一个可靠,快速且灵活的日志记录框架,用于控制台和文件追加。

Logging Example附加到控制台和文件togather!

答案 4 :(得分:0)

    public static void MaxMin(double[] temps) throws IOException {
    FileWriter fwriter = new FileWriter("Temperatures.txt", true);
    PrintWriter outputfile = new PrintWriter(fwriter);
    double min = Double.MAX_VALUE;
    double max = Double.MIN_VALUE;
    double sum = 0;

    DecimalFormat formatter = new DecimalFormat("0.0");

    for (int i = 0; i < temps.length; i++) {
        sum += temps[i];
        if (temps[i] > max) {
            max = temps[i];
        }
        if (temps[i] < min) {
            min = temps[i];
        }
    }
    double avg = sum / temps.length;



    String str = "Average Temp: " + formatter.format(avg) + "\n"
            + "Maximum Temp: " + formatter.format(max) + "\n"
            + "Minimum Temp: " + formatter.format(min);
    System.out.println(str);
    outputfile.println(str);
    outputfile.close();

}

制作一个字符串然后打印两次,\n是一个换行符