Bir void türü yönteminin sonucunu Java PrintWriter ile bir dosyaya nasıl yazdırabilirim

0

Soru

Java programlama kursum için egzersiz yapıyorum, soru şu şekilde devam ediyor:

Bir dosyaya yordama iletilen yükseklik değerini temel alan bir yıldız üçgeni çıkaran printTree adlı bir yöntem yazın. Bu yöntemi ana yöntemde sınayın.

  • Örneğin, Yükseklik 3 üçgeni file14 adlı bir dosyaya çıktı vermelidir:

Ana yöntemde yaptığım dosyaya void dönüşünü nasıl yazacağımdan emin değilim. Diğerlerinin ithalatını en aza indirmek istiyorum. java.io FileWriter dışında yöntemler, ancak herhangi bir yardım takdir edilir, Teşekkürler.

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

En iyi cevabı

3

Dört gözlem. System.out is aPrintStream (ve bir tane geçebilirsin PrintStream yönteminize). try-with-Resources eğer açık ortadan kaldırmak için izin verir close() arıyor. Kullanım System.getProperty("user.home") giriş klasörüne doğrudan yazmanıza izin verir (kullanışlı olabilir). Ve kullan j < i yerine if (j < i) iç döngüsünde. Beğenmek,

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

Ayrıca, Java 11'den beri,

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

Daha iyi bir cevap -- teşekkür ederim
Hovercraft Full Of Eels

Ben çok iyi usta ile gönderen bir nesne olarak bir tartışma yöntemleri, ama ben olduğumu varsayarsak benzer diğer yanıt, bu temelde yapar yani onun tüm "Tek çizgili": ilan Dosya Adlandırma bu. ve sonra bir baskı akışında olması onu argüman olarak gönderilebilir hale getiriyor mu? Bazı netlik noktalarını duymak isterim, kursum dosyaya yazmanın ilk aşamalarında f'dir, bu yüzden daha fazlasını anlamak isterim
Achor Gabriel

System.out is aPrintStream. Kendi inşa edebilirsiniz PrintStream örnekler. Bir yazma File. Bu yapıcı ile. Bir nesneyi argüman olarak göndermeye gelince, main(String[] args) (yaptığın ilk şey bu). Umarım işinize yarar.
Elliott Frisch

@ElliottFrisch Teşekkür ederim! Bunun benim için daha fazla araştırma çalışması gerektireceğini düşünüyorum, ancak doğru yönde yönlendirileceğimi düşünüyorum. Bu ana başlık gerçeği için teşekkür ederim, bilmediğim bir şey, ama şimdi yap. Çok takdir
Achor Gabriel
-2

Bu şekilde çözer misiniz

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

Bu hızlı bir şekilde çözmek için biraz çirkin bir yoldur.

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

Cevabınızı çok takdir ediyorum! Sanırım bundan uzaklaşacağım, üzgünüm, çünkü ileride başvurmak üzere bir parametre olarak PW ile nasıl çalışacağımı gerçekten bilmiyorum. Yine de teşekkür ederim, çok takdir edildim.
Achor Gabriel

Diğer dillerde

Bu sayfa diğer dillerde

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