Comment imprimer le résultat d'un vide, une méthode de type dans un fichier avec Java PrintWriter

0

La question

Je suis en train de faire l'exercice du travail pour mon cours de programmation Java, la question va comme suit:

Écrire une méthode appelée printTree que les sorties vers un fichier d'un triangle de astérisques basé sur la hauteur de la valeur passée à la procédure. Tester cette méthode dans la méthode main.

  • E. g. Triangle de hauteur de 3 de sortie pour un fichier appelé file14:

Je ne suis pas sûr de savoir comment écrire le vide de retour vers le fichier que j'ai fait dans la méthode main. J'aimerais réduire l'importation de tout autre java.io méthodes de côté de FileWriter, mais toute aide est appréciée, Merci.

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

La meilleure réponse

3

Quatre observations. System.out est un PrintStream (et vous pouvez passer une PrintStream pour votre méthode). try-with-Resources permet d'éliminer explicite close() les appels. À l'aide de System.getProperty("user.home") vous permet d'écrire dans le dossier d'accueil directement (ce qui peut être pratique). Et l'utilisation j < i au lieu de if (j < i) dans votre boucle interne. Comme,

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

Aussi, depuis 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

Une meilleure réponse -- merci
Hovercraft Full Of Eels

Je ne suis pas trop bien familiarisés avec l'envoi d'un objet comme un argument de méthodes, mais je pars du principe similaire à l'autre réponse, en fait cela fait donc le tout "un doublé": déclarer le fichier, de le nommer. et puis étant dans un flux d'impression qui le rend si son pouvant être envoyées comme argument? J'aimerais entendre un peu de clarté points, Mon cours est f dans les premiers stades de l'écriture dans le fichier, donc j'aimerais comprendre plus
Achor Gabriel

System.out est un PrintStream. Vous pouvez construire votre propre PrintStream les instances. Pour écrire à un File. Avec ce constructeur. Comme pour l'envoi d'un objet comme argument, main(String[] args) (c'est la première chose que vous faites). Espérons que cela aide.
Elliott Frisch

@ElliottFrisch Merci! Je pense que ce sera à la fin exigeant plus de travail de recherche sur ma fin, mais, je pense que je vais être guidé dans la bonne direction. Merci pour cet en-tête principal fait, quelque chose que je ne sais pas, mais plus maintenant. Très apprécié
Achor Gabriel
-2

Vous pourriez résoudre comme ça

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

C'est un peu laid moyen de les résoudre rapidement.

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

J'apprécie grandement votre réponse! Je pense que je vais écarter de ce mais désolé, comme je ne sais pas vraiment comment travailler avec le PW comme un paramètre de référence pour l'avenir. Merci, beaucoup apprécié.
Achor Gabriel

Dans d'autres langues

Cette page est dans d'autres langues

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