Jak vytisknout výsledek neplatný typ metoda do souboru s Java PrintWriter

0

Otázka

Dělám výkonu práce pro moje programování v jazyce Java samozřejmě, otázka je, jak to tak:

Napište metodu nazvanou printTree, že výstupy do souboru trojúhelník z hvězdiček v závislosti na výšce hodnoty předány do řízení. Otestujte metodu v metodě hlavní.

  • E. g. Trojúhelník výška 3 by měl výstup do souboru s názvem file14:

Jen si nejsem jistý, jak psát void návrat k souboru, který jsem učinil v hlavní metody. Rád bych, aby se minimalizovalo import jakékoliv jiné java.io metody kromě FileWriter, ale každá pomoc je vítána, Díky.

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

Nejlepší odpověď

3

Čtyři pozorování. System.out je PrintStream (a ty by mohly projít PrintStream na vaše metoda). try-with-Resources umožňuje eliminovat explicitní close() volání. Pomocí System.getProperty("user.home") umožňuje psát do domovské složky přímo (což může být užitečné). A použití j < i místo if (j < i) ve své vnitřní smyčky. Jako,

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();
    }
}

Také, protože 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

Lepší odpověď ... děkuji
Hovercraft Full Of Eels

Nejsem příliš zběhlý s odesláním v objektu jako argument do metody, ale předpokládám, že podobné jiné reakce, tohle v podstatě dělá to tak všechny jeho "one-lemované": prohlásil souboru, jmenovat to. a pak to, že v tisku stream je tak jeho sendable jako argument? Rád bych slyšel nějaké jasnosti bodů, Můj kurz je f v raných fázích psaní do souboru, takže já bych rád, aby pochopili, více
Achor Gabriel

System.out je PrintStream. Můžete vytvořit vlastní PrintStream instancí. K zápisu do File. S tímto konstruktor. Jako pro odesílání objekt jako argument, main(String[] args) (je to úplně první věc, kterou dělat). Doufám, že to pomůže.
Elliott Frisch

@ElliottFrisch Děkuji!!! Myslím, že to skončí vyžadují další výzkumné práce na mém konci, ale myslím, že to bude vedena ve správném směru. Děkuji vám za to, že hlavní záhlaví skutečnosti, něco, co jsem nevěděl, ale teď dělat. Ceněn
Achor Gabriel
-2

Můžete to vyřešit, jako je tento

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;
    } 
}

To je poněkud ošklivý způsob, jak to rychle vyřešit.

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

Oceňuji velmi vaši odpověď! Myslím, že budu bloudit daleko od to ale líto, protože opravdu nevím, jak pracovat s PW jako parametr pro budoucí použití. Děkuju, moc si toho cením.
Achor Gabriel

V jiných jazycích

Tato stránka je v jiných jazycích

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