2017-03-01 1 views
1

J'ai un programme que j'ai déjà créé en Java qui a plusieurs méthodes qui demandent une entrée utilisateur.Envoi d'une sortie d'un programme java avec des méthodes pour le fichier

Voici le programme:

static Scanner numberscanner = new Scanner(System.in); 
static Integer[] houses = {0,1,2,3,4,5,6,7}; 

public static void main(String[] args) 
{ 
    askForCrates(); 
    getTotal(); 
    int max = houses[0]; 
    getMin(); 
    getMaxHouse(max); 
    //Display the house number that recycled the most 
} 


//asks for the crates for each specific house number 
public static void askForCrates() 
{ 
    for (int i = 0; i < houses.length; i++) 
    { 
     System.out.println("How many crates does house " + i + " have?") ; 
     Integer crates = numberscanner.nextInt(); 
     houses[i] = crates; 
    } 
} 

//uses a for statement to get the total of all the crates recycled 
public static void getTotal() 
{ 
    //Get total 
    Integer total = 0; 
    for (int i = 0; i < houses.length; i++) 
    { 
     total = total + houses[i]; 
    } 
    System.out.println("Total amount of recycling crates is: " + total); 
} 

//Displays and returns the max number of crates 
public static Integer getMax(Integer max) 
{ 
    for (int i = 0; i < houses.length; i++) 
    { 
     if(houses[i] > max) 
     { 
      max = houses[i]; 
     } 
    } 
    System.out.println("Largest number of crates set out: " + max); 
    return max; 
} 

// gets the house numbers that recycled the most 
// and puts them in a string 
public static void getMaxHouse(Integer max) 
{ 
    ArrayList<Integer> besthouses = new ArrayList<Integer>(); 

    String bhs = ""; 
    for (int i = 0; i < houses.length; i++) 
    { 
     if(houses[i].equals(max)) 
     { 
      besthouses.add(houses[i]); 
     } 
    } 
    for (Integer s : besthouses) 
    { 
     bhs += s + ", "; 
    } 
    System.out.println("The house(s) that recycled " + max + " crates were: " + bhs.substring(0, bhs.length()-2)); 
} 

// gets the minimum using the Arrays function to sort the 
// array 
public static void getMin() 
{ 
    //Find the smallest number of crates set out by any house 

    Arrays.sort(houses); 
    int min = houses[0]; 
    System.out.println("Smallest number of crates set out: " + min); 
} 
} // probably the closing '}' of the class --- added by editor 

Le programme fonctionne très bien, mais maintenant je veux prendre toute la sortie, y compris l'entrée des utilisateurs et de mettre cette sortie dans un fichier.

J'ai vu des façons de le faire avec BufferedWriter et FileWriter et je comprends comment cela fonctionne avec l'entrée et la sortie en utilisant le lecteur. Sauf dans les exemples de programmes que j'ai vus, aucun de ces programmes n'a de méthode.

Je peux réécrire mon programme sans méthodes ou les modifier pour retourner l'entrée au lieu d'être annulé et en utilisant System.println. Mais je me demandais s'il y avait un moyen d'envoyer toute la sortie de mon programme dans un fichier sans avoir à réécrire mon programme?

Répondre

0

La manière simple, vous pouvez exécuter votre programme:

java -jar app.jar >> log.out 

Modifier la manière correcte:

PrintStream ps = new PrintStream("log.out"); 
PrintStream orig = System.out; 
System.setOut(ps); 

Et ne pas oublier:

ps.close(); 

dans le fin