es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo imprimir el resultado de un método de tipo void en un archivo usando Java PrintWriter

Estoy haciendo un trabajo de ejercicios para mi curso de programación en Java, la pregunta es la siguiente:

Escriba un método llamado printTree que genere un triángulo de asteriscos en un archivo de salida basado en el valor de altura pasado al procedimiento. Pruebe este método en el método principal.
Por ejemplo, un triángulo de altura 3 debería escribirse en un archivo llamado file14:

Simplemente no estoy seguro de cómo escribir el retorno de vacío al archivo que he hecho en el método principal. Me gustaría minimizar la importación de cualquier otro método de java.io aparte de FileWriter, pero cualquier ayuda es apreciada, gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para escribir la salida del método printTree en un archivo, debes modificar la firma del método para que devuelva una cadena en lugar de void. Luego, dentro del método, puedes crear un StringBuilder para construir la representación de cadena del triángulo y devolverlo al final.

    Aquí está una versión actualizada del código:

    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    public class OutputToFile14 {
    
        public static void main(String[] args) {
            try (PrintWriter output = new PrintWriter(new FileWriter("file14.txt"))) {
                output.write(printTree(3));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public static String printTree(int height) {
            StringBuilder sb = new StringBuilder();
            for (int i = 1; i <= height; i++) {
                for (int j = 0; j < i; j++) {
                    sb.append("*");
                }
                sb.append(System.lineSeparator());
            }
            return sb.toString();
        }
    }
    

    En el método main, ahora estamos creando un PrintWriter que está envuelto en un FileWriter en lugar de usar el método write en el PrintWriter. Esto nos permite escribir directamente en el archivo. También estamos usando un bloque try-with-resources para cerrar automáticamente el PrintWriter después de terminar.

    En el método printTree, estamos usando un StringBuilder para construir la cadena de salida. Estamos iterando sobre las filas del triángulo y luego sobre las columnas de cada fila, agregando un asterisco para cada columna. También estamos usando System.lineSeparator() para agregar un carácter de nueva línea entre cada fila.

    Con estas modificaciones, la salida del método printTree se escribe directamente en el archivo en lugar de imprimirse en la consola.

Comments are closed.