I've made a program for determining the time of a murder. The code I have right now prints exactly what it should to the terminal. I want it printed to a file. However, I'm not supposed to use System.setOut() for this assignment. I'm supposed to print to a file instead of to the terminal.
I know how to write a simple String into a file, the problem here is I already have methods for printing my results to the terminal, and I'm not sure how I "convert" those methods into printing into a file instead. 
This is my two printing methods and main method:
Printing 2d array method:
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");
    }
}
Printing full report method:
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);
}
Main method:
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));
}
I can post the entire code if needed.
I am aware that there are similar questions asked earlier, but none of them gave me the help I needed. I also do not have enough reputation to ask follow-up questions to any of the answers given on those threads, so I was forced to ask a new question.
Thanks in advance for any help given!
Additional information:
Even though I said I'm not supposed to use System.setOut(), I have tried using the method and answers given in this thread, without any luck. If the best and most efficient way of doing this is via System.setOut(), I do appreciate answers that make me understand how I can implement this and make it work in my code, even though I'm looking for an alternative method. 
 
    