[Java] Frage zwecks vereinfachung

04/22/2013 14:04 FoGzone#1
Also hier ist zunächst mal die Aufgabenstellung:
Quote:
Wir wenden uns noch einmal der Unicode-Ersatzdarstellung zu.
In Aufgabe 2 haben wir die Umwandlung der Ersatzdarstellung in das zugehörige Unicodezeichen dem ? (wem denn?) überlassen. Das wollen wir nun selbst in die Hand nehmen, indem die Ersatzdarstellung für ein Unicode-Zeichen von der Standardeingabe (Konsole) eingelesen und verarbeitet wird.
Schreiben Sie zunächst ein Programm, das Zeichen für Zeichen von der Standardeingabe liest und prüft, ob die Eingabe von der Form \uxxxx ist, wobei x jeweils eine der bekannten Hex-Ziffern (0..9,a..f) sein soll (Großbuchstaben brauchen nicht unbedingt berücksichtigt werden).

Falls diese Syntax bei der Eingabe nicht eingehalten wird, soll eine qualifizierte Fehlermeldung ausgegeben und das Programm beendet werden.
Als falsche Eingabe gilt auch, wenn diese zu kurz oder zu lang ist.
Erweitern Sie das Programm nun so, dass die eingegebene Ersatzdarstellung in den zugehörigen Zahlwert (int) des Unicode-Zeichens umgewandelt wird. Dazu definieren Sie sich verschiedene Variablen für die Stellen der Hex-Ziffern, rechnen diese ins Dezimalsystem um und fügen sie zu einem Zahlwert zusammen.

Geben Sie diesen Zahlwert und das Unicode-Zeichen selbst auf die Standardausgabe (Konsole) aus.

Beispiel: Bei Eingabe von \u0041 soll folgende Zeile ausgegeben werden:
hex: 0041, dez: 65, char: A .

Auch bei dieser Aufgabe soll (noch) auf Schleifen verzichtet werden, wenn nötig unter Inkaufnahme von Code-Duplikation. Außer System.in.read() und System.out.println()sollen keine Bibliotheksfunktionen verwendet werden.
Hier ist der Code den ich habe:
[Only registered and activated users can see links. Click Here To Register...]

Ist es jetzt möglich ohne die Verwundung von Schleifen den Switch/Case Part ab Zeile 111 in ca 4-6 Zeilen Code zu packen?
Warum 4-6 Zeilen Code? Als ich den Code abgegeben habe, habe ich einen Anschiss bekommen, dass es so zwar geht, aber absolut scheiße aussieht und man es anscheinend ordentlich kürzen kann (zu 4-6 Zeilen Code). Ich weiß jetzt nicht, ob mein Prof vergessen hat, dass wir keine Schleifen werden dürfen oder ob es wirklich eine Methode gibt und ich einfach nur zu blöd bin, drauf zu kommen. War dann auch erstmal perplex und habs total verrafft den Prof zu fragen :/
04/22/2013 15:02 'Henry.#2
ja ist es, wenn du die variablen unx1,unx2,unx3,... etc. in nen Array packst und diesen dann anhand der indizes durchläufst.

mfg
04/22/2013 16:23 dowhile#3
Quote:
Auch bei dieser Aufgabe soll (noch) auf Schleifen verzichtet werden
Quote:
ja ist es, wenn du die variablen unx1,unx2,unx3,... etc. in nen Array packst und diesen dann anhand der indizes durchläufst.
Wie durchläuft man ohne Schleifen Arrays?

Du kannst, wenn du weißt, ob unx[..] zwischen 0..9 oder a..f liegt, die Variable zu int casten und 48 (wenn zwischen 0..9; '0' = 48, 48 - 48 = 0) bzw. 87 (a..f; 'a' = 97, 97 - 87 = 10) abziehen. Das wären aber noch immer mehr als 4-6 Zeilen Code.

Oder so:
Quote:
dzml += unx4 - ((unx4 > 57) ? 87 : 48);
Dann wären es im Grunde vier Zeilen für unx1-4. Sonderlich gut ist das so aber, denke ich, nicht gelöst.
04/22/2013 18:58 'Henry.#4
upsi hab ich überlesen^^
na dann durchlauf den Array einfach mit na Rekursion, dann brauchste keine Schleife. Nur der Lehrer fühlt sich dann n bisschen verarscht