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.

