Cum pentru a imprima rezultatul unei void metoda de tip într-un fișier cu Java PrintWriter

0

Problema

Fac exercitii pentru programare Java curs, problema merge ca asa:

Scrie o metoda numita printTree că rezultatele într-un fișier un triunghi de asteriscuri bazat pe valoarea înălțime a trecut la procedura. Testați această metodă în principalul metodă.

  • E. g. Triunghi de inaltime 3 ar trebui să ieșire la un fișier numit file14:

Nu sunt sigur cum să scrie golul a reveni la fișierul pe care am făcut-o în principala metodă. Mi-ar place pentru a reduce importul de orice alt java.io metode în afară de FileWriter, dar orice ajutor este apreciat, Multumesc.

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

Cel mai bun răspuns

3

Patru observații. System.out este un PrintStream (și ar putea trece PrintStream la metodă). try-with-Resources vă permite de a elimina explicit close() apeluri. Folosind System.getProperty("user.home") vă permite să scrie în folderul acasă direct (care poate fi la îndemână). Și de a folosi j < i în loc de if (j < i) în interior bucla. Cum ar fi,

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

De asemenea, deoarece 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

Un răspuns mai bun ... multumesc
Hovercraft Full Of Eels

Eu nu sunt prea bine versat cu trimiterea într-un obiect ca argument la metode, dar presupun similare la alt răspuns, acest fapt o face atât de toate "o căptușite": declarând fișier, numind-o. și apoi într-un flux de imprimare face astfel încât sa sendable ca un argument? Mi-ar plăcea să aud unele claritate puncte, cursul Meu este f în stadii incipiente de scriere în fișier deci, aș vrea să înțeleg mai mult
Achor Gabriel

System.out este un PrintStream. Puteți construi propriul dvs. PrintStream cazuri. Pentru a scrie un File. Cu acest constructor. Ca pentru a trimite un obiect ca argument, main(String[] args) (e primul lucru pe care il face). Sper că vă ajută.
Elliott Frisch

@ElliottFrisch Multumesc! Cred că acest lucru va sfârși necesită mai multe lucrări de cercetare din partea mea, dar cred că voi fi ghidat în direcția corectă. Vă mulțumesc pentru că principalul antet fapt, ceva ce nu am stiut, dar acum nu. Mult mai apreciat
Achor Gabriel
-2

Ai putea rezolva o astfel de prognoze

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

Acest lucru este oarecum urât mod de a rezolva rapid.

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

Apreciez foarte mult raspunsul tau! Cred că am de gând să se abată de departe de acest lucru, deși pare rau, ca eu nu prea știu cum să lucreze cu PW ca un parametru de referință pentru viitor. Vă mulțumesc, totuși, mult mai apreciat.
Achor Gabriel

În alte limbi

Această pagină este în alte limbi

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