Thema: zentrierte Ausgabe auf Konsole

Hi Folks!

wie man eine Ausgabe auf der Konsole realisiert ist mir SCHON klar <img src="/forum/images/graemlins/smile.gif" alt="" />

System.out.println("Text");

was ist jetzt aber, wenn ich diesen Text zentriert darstellen möchte?

gibts da n direkten Befehl, oder ein Trick? (hab nichts dazu gefunden)

schöne Grüße

Re: zentrierte Ausgabe auf Konsole

ok...hat sich soweit erledigt.

Es ging darum auf der Dos-Konsole eine Raute auszugeben, die aus verschiedenen Zeichen zusammengesetzt werden soll...und das halt mittig.

Meine Lösung sieht jetzt so aus:

public class RauteTest {
   
    String leer = " ";
    String zeichen = "*";
    String zeichenAlt = "$";
       
    int maxLengthLeerUp = 32;
    int maxLengthZeichenUp = 2;
       
    int maxLengthLeerDown = 23;
    int maxLengthZeichenDown = 20;
       
    int z1 = 1;
    int z2 = 1;
   
    public void zeichenUp (){
        do {
            for (int i=1; i<maxLengthLeerUp; i++){
                System.out.print(leer);
            }
            for (int i=1; i<maxLengthZeichenUp; i++){
                if ((i==3 && z1>2) || (i==maxLengthZeichenUp-3 && z1>3)){
                    System.out.print(zeichenAlt);
                }
                else{
                    System.out.print(zeichen);
                }
                       
            }
            System.out.println();
            z1 = z1 + 1;
            maxLengthLeerUp = maxLengthLeerUp - 1;
            maxLengthZeichenUp = maxLengthZeichenUp + 2;
        }
        while (z1<12);
    }
   
    public void zeichenDown(){
        do {
            for (int i=1; i<maxLengthLeerDown; i++){
                System.out.print(leer);
                       
            }
            for (int i=1; i<maxLengthZeichenDown; i++){
                if ((i==3 && z2<9) || (i==maxLengthZeichenDown-3 && z2<8)){
                    System.out.print(zeichenAlt);
                }
                else{
                    System.out.print(zeichen);
                }
            }
            System.out.println();
            z2 = z2 + 1;
            maxLengthLeerDown = maxLengthLeerDown + 1;
            maxLengthZeichenDown = maxLengthZeichenDown - 2;
        }
        while (z2<12);
    }
   
   
    public static void main (String[] args) {
   
        System.out.println();
        RauteTest raute = new RauteTest();
       
        raute.zeichenUp();
        raute.zeichenDown();
       

    }
}

wenn jmd ne Idee hat wie man das eleganter lösen kann, bin ich auf jeden Fall offen für.
Sinn und Zweck des ganzen ist, das ich Medieniformatik im 1. Semester studiere und es war Aufgabenstellung unter Verwendung von Schleifen dieses Ergebnis zu erzielen.

gruß

Re: zentrierte Ausgabe auf Konsole

Hi!

Bau doch eine Funktion zentriert(text, con_breite=80) in der zuerst die Länge des auszugebenen Texts ermittelt wird. Dieser Wert wird dann von der Breite der Konsole (con_breite) abgezogen. Dann weißt du, wieviele Leerzeichen rechts und links vom Text hinmüssen, um einmal vollständig die Konsole zu füllen. Anschließend musst du diesen Wert nur noch durch zwei Teilen und genau so viele Leerzeichen ausgeben wie ermittelt.
Anschließend kommt der Text. Et voilà!

Mamphil

The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”

Re: zentrierte Ausgabe auf Konsole

Hi Mamphil!

hm...wie ermittle ich denn die Breite der Konsole?
lustiges Klassenraten in der API <img src="/forum/images/graemlins/smile.gif" alt="" /> ?

dort hab ich zb folgendes gefunden:

public PageAttributes.MediaType getMedia()
Zitat: Returns the paper size for pages using these attributes

nur...ist das richtig und wenn ja wie benutze ich das?

schöne Grüße