Come stampare il risultato di un tipo void metodo in un file con Java PrintWriter

0

Domanda

Sto facendo un esercizio di lavorare per il mio corso di programmazione Java, la domanda va così:

Scrivere un metodo chiamato printTree che le uscite di un file di un triangolo di asterischi basato sul valore di altezza passati alla procedura. Prova con questo metodo il metodo main.

  • E. g. Triangolo di altezza 3 dovrebbe output in un file chiamato file14:

Non sono proprio sicuro di come scrivere il vuoto tornare al file che ho fatto nel metodo main. Vorrei ridurre al minimo l'importazione di qualsiasi altro java.io metodi a parte FileWriter, ma ogni aiuto è apprezzato, Grazie.

import java.io.PrintWriter;

public class OutputToFile14 {

    public static void main(String[] args) throws Exception{
        
        //Creating PrintWriter
        PrintWriter output = new PrintWriter("file14.txt");
        
        //writing method output to file
        output.write(printTree(4));
        
        //saving file
        output.close();
    }

    public static void printTree (int height) throws IOException{
        
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < height; j++) {
                if (j < i) {
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    } 
}
call file java methods
2021-11-24 02:22:55
2

Migliore risposta

3

Quattro osservazioni. System.out è un PrintStream (e si potrebbe passare un PrintStream per il metodo). try-with-Resources consente di eliminare esplicito close() le chiamate. Utilizzando System.getProperty("user.home") consente di scrivere nella cartella home, direttamente (che può essere utile). E l'uso j < i invece di if (j < i) nel vostro ciclo interno. Come,

public static void main(String[] args) throws Exception {
    try (PrintStream output = new PrintStream(
            new File(System.getProperty("user.home"), "file14.txt"))) {
        printTree(output, 4);
    }
}

public static void printTree(PrintStream out, int height) throws IOException {
    for (int i = 0; i < height; i++) {
        for (int j = 0; j < i; j++) {
            out.print("*");
        }
        out.println();
    }
}

Inoltre, dato che Java 11,

public static void printTree(PrintStream out, int height) throws IOException {
    for (int i = 0; i < height; i++) {
        out.println("*".repeat(i)); // You might want "*".repeat(1 + i)
    }
}
2021-11-24 02:40:07

Una risposta migliore -- grazie
Hovercraft Full Of Eels

Io non sono troppo ferrato con l'invio di un oggetto come argomento di metodi, ma sto assumendo simile a l'altra risposta, questo in pratica rende così il suo "uno-foderato": dichiarando il file con il nome. e poi essendo in un flusso di stampa rende così la sua sendable come argomento? Mi piacerebbe sentire un po ' di chiarezza punti, il Mio corso è f nelle prime fasi di scrittura su file quindi mi piacerebbe capire di più
Achor Gabriel

System.out è un PrintStream. È possibile costruire il proprio PrintStream le istanze. Per scrivere un File. Con questo costruttore. Come per l'invio di un oggetto come argomento, main(String[] args) (è la prima cosa da fare). Speranza che aiuta.
Elliott Frisch

@ElliottFrisch Grazie! Penso che questo finirà che richiedono più lavoro di ricerca da parte mia, ma penso di essere guidato nella giusta direzione. Grazie per l'intestazione di fatto, qualcosa che non sapevo, ma ora che fare. Molto apprezzato
Achor Gabriel
-2

Si potrebbe risolvere come questo

import java.io.PrintWriter;

public class OutputToFile14 {

    public static void main(String[] args) throws Exception{
        
        //Creating PrintWriter
        PrintWriter output = new PrintWriter("file14.txt");
        
        //writing method output to file
        output.write(printTree(4));
        
        //saving file
        output.close();
    }

    public static String printTree (int height) throws IOException{
        String output = "";
        
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < height; j++) {
                if (j < i) {
                    System.out.print("*");
                    output += "*";
                }
            }
            System.out.println();
            output += "\r\n";
        }
        return output;
    } 
}

Questo è un po ' brutto modo di risolverlo presto.

import java.io.PrintWriter;

public class OutputToFile14 {

    public static void main(String[] args) throws Exception{
        
        //Creating PrintWriter
        PrintWriter output = new PrintWriter("file14.txt");
        
        //writing method output to file
        //output.write(printTree(4));
        printTree(4, output);
        
        //saving file
        output.close();
    }

    public static void printTree (int height, PrintWriter pw) throws IOException{
        
        for (int i = 0; i < height; i++) {
            for (int j = 0; j < height; j++) {
                if (j < i) {
                    System.out.print("*");
                    pw.write("*");
                }
            }
            System.out.println();
            pw.write("\r\n");
        }
    } 
}
2021-11-24 02:35:23

Apprezzo molto la tua risposta! Penso che ho intenzione di allontanarsi da questo, però mi dispiace, come non so davvero come lavorare con la PW come parametro di riferimento per il futuro. Grazie, però, molto apprezzato.
Achor Gabriel

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................