Meine ersten Schritte in Java sind getan. Diese beschrĂ€nken sich noch auf die Textausgabe in einer Konsolenanwendung aber nach „Hello World“ kommt nunmal sowas đ
Gestern Abend habe ich meine erste Anwendung geschrieben.
Ziel: Sie soll die Nutzung von Unicode Zeichen zum Aufbau einer „Titel Box“ verdeutlichen und dabei den Unterschied zwischen System.out und System.console() hervorheben. Am Ende wird der Aufbau dynamisch abhĂ€ngig vom beinhalteten Text gestaltet und in einer Funktion verpackt.
Alle Anmerkungen, Hinweise, Links und Quellen stehen im Code.
Den Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
public class Gruppenmitglieder { /** Author: Hannes Schurig Created: 6.4.2012 22:16 Changed: 7.4.2012 00:28 Version: 1.1 Changelog: v1.1: Code der for-Schleife optimiert v1.0: Erstellung der GUI mit einer Funktion, Ausgabe aller Namen eines festgelegten Arrays untereinander Title: Gruppenmitglieder Description: Mein erster Versuch mit Java. Ziel ist die Ausgabe von vielen Namen. Die Ausgabe soll mit nur 1 Schleife und einem Array erfolgen um möglichst flexibel einsetzbar zu sein. Ich ergĂ€nze das um einen Titel-Prototyp. Dieser soll dynamisch mit einer Funktion erstellt werden können um ebenfalls flexibel und einfach anwendbar zu sein. **/ public static void buildGUI(String text) { int length = text.length(); String slength = String.valueOf(length); // Box mit den richtigen MaĂen bauen System.console().printf("\u2554"); for(int i=0; i<length; i++) { System.console().printf("\u2550"); } System.console().printf("\u2557\n"); System.console().printf("\u2551"+text+"\u2551 \n"); System.console().printf("\u255A"); for(int i=0; i<length; i++) { System.console().printf("\u2550"); } System.console().printf("\u255D \n"); } public static void main(String[] args) { /** Hat 2 Stunden gedauert das Zusammenspiel des Character Encoding von Windows und Java halbwegs zu verstehen. Die Windows CMD arbeitet mit der alten ANSI Kodierung und System.out verwendet stur diese Systemkodierung. ANSI beinhaltet aber zu wenig schöne Zeichen. FĂŒr Extended ASCII und Unicode muss man System.console() nutzen, wenn man nicht die Codepage des Systems vor der AusfĂŒhrung verstellen möchte (was nicht zu empfehlen ist). System.console() erkennt die benötigte Kodierung automatisch. Quelle: http://bit.ly/Htl3SH BOX_DRAWING Unicode Chars: http://bit.ly/HtlmNb Double Box Codes skizziert: 2554 2550 2566 2550 2557 2551 2551 2551 2560 2550 256C 2550 2563 2551 2551 2551 255A 2550 2569 2550 255D Mehr? Alle Unicode Characters: http://bit.ly/HtmyjI Let's go! **/ /** einfache leere Box __________________ **/ System.console().printf("Box:\n"); System.console().printf("\u2554\u2550\u2550\u2550\u2557 \n"); System.console().printf("\u2551 \u2551 \n"); System.console().printf("\u255A\u2550\u2550\u2550\u255D \n"); /** breite Box mit wenig Code dank Schleife _______________________________________ **/ System.console().printf("breite Box:\n"); // oberer Rand System.console().printf("\u2554"); for(int i=0; i<19; i++) { System.console().printf("\u2550"); } System.console().printf("\u2557 \n"); // Mitte mit Text System.console().printf("\u2551 Dies ist ein Test \u2551 \n"); // unterer Rand System.console().printf("\u255A"); for(int i=0; i<19; i++) { System.console().printf("\u2550"); } System.console().printf("\u255D \n"); /** dynamische Boxbreite dank ZeichenzĂ€hlung ________________________________________ **/ System.console().printf("dynamische Box:\n"); // gewĂŒnschter Boxtext (sollte nicht zu lang sein), Zeichen zĂ€hlen String text = " 6.4.2012 | Gruppenmitglieder ausgeben | Hannes Schurig "; int length = text.length(); String slength = String.valueOf(length); // Box mit den richtigen MaĂen bauen System.console().printf("\u2554"); for(int i=0; i<length; i++) { System.console().printf("\u2550"); } System.console().printf("\u2557\n"); System.console().printf("\u2551"+text+"\u2551 \n"); System.console().printf("\u255A"); for(int i=0; i<length; i++) { System.console().printf("\u2550"); } System.console().printf("\u255D \n"); /** Programmieren I: LE01 Ăbung: Aufgabenblatt 1: Gruppenmitglieder ausgeben ________________________________________________________________________ **/ System.out.println(""); System.console().printf("Programmieren I: LE01 Ăbung: Aufgabenblatt 1: Gruppenmitglieder ausgeben:\n"); System.out.println(""); // Titel erstellen buildGUI(" 6.4.2012 | Gruppenmitglieder ausgeben | Hannes Schurig "); System.out.println(""); System.out.println(""); // Namen festelegen String[] namen = {"Hannes Schurig", "Max Mustermann", "Max Mustermann", "und viele mehr"}; // sexy Abarbeitung von Arrays mit wenig Code: http://bit.ly/HoeKyp for(String s : namen){ System.console().printf(s+"\n"); } System.out.println(""); System.out.println(""); /** Farbige Ausgabe war leider nicht so einfach wie gedacht, DOS ist da etwas zu alt fĂŒr. Es gibt portable AnsĂ€tze aber die sind mir jetzt zu krass. Siehe: http://bit.ly/Htrg0Y **/ } }
Hinweis: Ich benutze Javadoc Kommentarblöcke (mit 2 Sternen) weil die Blog-Code-Anzeige bei normalen Kommentarblöcken (mit 1 Stern) spinnt. Dient also nur der korrekten Darstellung im Blog.