Ako vytlačiť výsledok neplatný typ metódy do súboru s Java PrintWriter

0

Otázka

Robím cvičenia práca pre moju Java programovanie samozrejme, otázka, ide ako tak:

Napíšte metódou, ktorá sa nazýva printTree, že výstupy do súboru trojuholník z hviezdičiek na základe výšky hodnoty odovzdané do poriadku. Test táto metóda v hlavnej metódy.

  • E. g. Trojuholník, výška 3 mal by výstup do súboru s názvom file14:

Som proste nie som si istý, ako napísať neplatné vrátiť do súboru, ktorý som urobil v hlavnej metódy. Chcel by som, aby sa minimalizovalo import všetky ostatné java.io metódy okrem FileWriter, ale každá pomoc je ocenil, Vďaka.

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

Najlepšiu odpoveď

3

Štyri pripomienky. System.out je PrintStream (a mohli by ste prejsť PrintStream ak vaša metóda). try-with-Resources umožňuje eliminovať explicitné close() hovory. Pomocou System.getProperty("user.home") umožňuje písať do domovského priečinka priamo (ktoré môžu byť šikovný). A použitie j < i namiesto if (j < i) vo vašom vnútorné slučky. Ako,

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

Tiež, pretož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šiu odpoveď-ďakujem vám
Hovercraft Full Of Eels

Nie som si príliš dobre vyznajú s odoslaním objekt ako argument metódy, ale ja som za predpokladu, že podobné inú odpoveď, to v podstate robí to tak všetky jeho "one-linajkované": konkurz súbor, pomenovanie. a potom to, že v tlačovej stream je to tak jeho sendable ako argument? Ja by som rád počul nejaký jasnosť bodov, Môj kurz je f v skorých štádiách pri zápise do súboru, takže som rád, pochopiť viac
Achor Gabriel

System.out je PrintStream. Si môžete postaviť svoj vlastný PrintStream inštancie. Ak chcete napísať na File. S týmto constructor. Ako pre odosielanie objekt ako argument, main(String[] args) (to je veľmi prvá vec, ktorú urobiť). Dúfam, že pomôže.
Elliott Frisch

@ElliottFrisch Ďakujeme! Myslím, že to skončí vyžadujú viac výskumné práce na mojej strane, ale, myslím, že sa budem byť vedená v správnom smere. Ďakujem za hlavné záhlavie skutočnosť, niečo, čo som nevedel, ale teraz robiť. Cenený
Achor Gabriel
-2

Mohli by ste ho vyriešiť, ako 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 dosť škaredý spôsob, ako to vyriešiť rýchlo.

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ňujem výrazne vašu odpoveď! Myslím, že budem túlavých preč z tejto keď je nám ľúto, pretože ja naozaj neviem, ako pracovať s PW ako parameter pre budúce použitie. Ďakujem tomu, cenený.
Achor Gabriel

V iných jazykoch

Táto stránka je v iných jazykoch

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