Drucken Sie ein Rechteck aus Sternchen in Java

Folgendes ist der source-code zu drucken, ein Rechteck vollständig aus Sternchen (*), mit einer test-Klasse mit eingeschlossen.

import javax.swing.JOptionPane ;

/**
 * A class to print block rectangles.
 */
class RectanglePrinter
{
    //instance var's
    int height ;            //height of rectangle (i.e. number of segments)    
    int width ;             //width of each segment(i.e. number of "*"s printed) 

    /**
     * Create a RectanglePrinter object.
     * @param height height of rectangle (i.e., number of lines to print)
     * @param width width of rectangle (i.e., number of '*'s per line
     */
    public RectanglePrinter(int height, int width)  //constructor
    {
        this.height = height ;
        this.width = width ;
    }

    /**
     * Prints one line of a rectangle, by printing exactly "width" asterisks
     */ 
    public void printSegment()
    {
        //write the body of this method here


    }

    /**
     * Prints a rectangle exactly "height" lines in height.  Each line is 
     * printed via a call to method printSegment
     */ 
    public void printRectangle()
    {
        System.out.println("Printing a " + height + " x " + width + " rectangle:") ;
        //write the body of this method here


    }

}  //end of class rectanglePrinter definition

public class RectanglePrinterTest
{
    public static void main (String [] args)
    {
        String input = JOptionPane.showInputDialog
                                   ("What is the height of the rectangle?") ;
        int height = Integer.parseInt(input) ;

        input = JOptionPane.showInputDialog
                            ("What is the width of the rectangle?") ;

        int width = Integer.parseInt(input) ;

        RectanglePrinter r = new RectanglePrinter(height, width) ;

        System.out.println() ;
        r.printRectangle() ;
        System.out.println() ;
    }
}

In den Segmenten, in denen es heißt, füllen Sie das Methode Körper, ich wurde angewiesen, zu verwenden für Schleifen zur Ausgabe der Sternchen. Ich glaube, ich habe eine grundlegende Idee, wie das zu tun ist das printSegment () - Methode:

for (int w = 1; w <= width; w++)
            {
                System.out.println("*");
            }

Aber von dort aus, bin ich unsicher, was zu tun innerhalb der printRectangle Methode. Ausgehend von den Kommentaren in den code, denke ich, ich sollte schreiben Sie eine for-Schleife in der printRectangle-Methode, ruft die printSegment Methode, außer ich glaube nicht, können Sie rufen Sie eine void-Methode in den Körper einer anderen Methode. Jede Hilfe auf diesem würde sehr geschätzt werden.

Update:

Ich habe versucht, verwenden Sie den folgenden code innerhalb des Körpers der printRectangle()

for (int h = 1; h <= height; h++)
                {
                    printSegment();
                }

Nachdem die Ausführung des Codes und der Eingabe der Höhe und Breite, erhielt ich die folgende Ausgabe:

Printing a 6 x 7 rectangle:
*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

Nun kann ich drucken Sie das Sternchen zumindest, so brauche ich nur zu wissen, wie Sie den code ändern, damit die Ausgabe ist ein Rechteckiger block von Sternchen.

Update #2.

Dachte ich, die Lösung. Hier ist der code, hab mir die Ergebnisse, die ich suchte.

import javax.swing.JOptionPane ;

/**
 * A class to print block rectangles.
 */
class RectanglePrinter
{
    //instance var's
    int height ;            //height of rectangle (i.e. number of segments)    
    int width ;             //width of each segment(i.e. number of "*"s printed) 

    /**
     * Create a RectanglePrinter object.
     * @param height height of rectangle (i.e., number of lines to print)
     * @param width width of rectangle (i.e., number of '*'s per line
     */
    public RectanglePrinter(int height, int width)  //constructor
    {
        this.height = height ;
        this.width = width ;
    }

    /**
     * Prints one line of a rectangle, by printing exactly "width" asterisks
     */ 
    public void printSegment()
    {
        //write the body of this method here
                for (int w = 1; w <= width; w++)
                {
                    for (int h = 1; h <= height; h++)
                    {
                        System.out.print("*");
                    }
                    System.out.println();
                }


    }

    /**
     * Prints a rectangle exactly "height" lines in height.  Each line is 
     * printed via a call to method printSegment
     */ 
    public void printRectangle()
    {
        System.out.println("Printing a " + height + " x " + width + " rectangle:") ;
        //write the body of this method here
                printSegment();


    }

}  //end of class rectanglePrinter definition

public class RectanglePrinterTest
{
    public static void main (String [] args)
    {
        String input = JOptionPane.showInputDialog
                                   ("What is the height of the rectangle?") ;
        int height = Integer.parseInt(input) ;

        input = JOptionPane.showInputDialog
                            ("What is the width of the rectangle?") ;

        int width = Integer.parseInt(input) ;

        RectanglePrinter r = new RectanglePrinter(height, width) ;

        System.out.println() ;
        r.printRectangle() ;
        System.out.println() ;
    }
}

Unterschiede gemacht: ich habe eine verschachtelte for-Schleife in den Körper des printSegment () - Methode, und statt der Verwendung
System.out.println("*"); verwendet System.out.print("*") in der innersten Schleife, und System.out.println() in der äußeren Schleife, die Folge in der folgende Ausgabe für die Eingabe von 5 x 7:

Printing a 5 x 7 rectangle:
*****
*****
*****
*****
*****
*****
*****
  • "Ich glaube nicht, können Sie rufen Sie eine void-Methode in den Körper einer anderen Methode". Was Sie denken, ist falsch.
  • Rufen Sie ein void Methode innerhalb einer anderen Methode. Gehen Sie voran und versuchen zu tun, was Sie denken, Sie sollten. Du bist auf dem richtigen Weg.
InformationsquelleAutor 011012 | 2015-11-02
Schreibe einen Kommentar