ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
1346
1346
EMPFEHLEN
-
Hallo,
ich habe die Funktionen Zahl -> Zahlenwort und Alle Zahlen in einem String ersetzten in Java gelöst.
Der Code der daraus entsprungen ist gefällt mir nicht wirklich da ich mehr oder weniger ohne Idee drauflos programmiert habe
.
Das ganze habe ich mit Rekursion gelöst wobei es sicherlich noch besser geht (bin deswegen mal gespannt auf andere Abgaben gespannt).
Sonst ist vielleicht noch zu sagen das eher ein Neuling in Java bin und ursprünglich .NET programmiert habe (bin wegen Umstieg auf Ubuntu umgestiegen).
So hier nun der Code der Klasse Zahlen mit dem ich wie gesagt nicht wirklich zufrieden bin:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
private static Pattern p = null; private static final String[] EinerZahlen = { "eins", "zwei", "drei", "vier" , "fünf" , "sechs", "sieben", "acht", "neun" }; private static final String[] ZehnerZahlen = { "zehn", "zwanzig", "dreißig", "vierzig", "fünfzig", "sechzig", "siebzig", "achzig", "neunzig" }; private static final String[] ZahlenVorsilben = { "ein", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun" }; private static String VordereNullenLöschen(String eingabe) { if (eingabe.startsWith("0") && eingabe.length() > 1) { return VordereNullenLöschen(eingabe.substring(1, eingabe.length())); } else { return eingabe; } } public static String KonvertertiereZahl(String eingabe) { eingabe = VordereNullenLöschen(eingabe); int länge = eingabe.length(); switch (länge) { case 1: // Einer behandeln if (Integer.valueOf(eingabe) == 0) return "null"; return EinerZahlen[Integer.valueOf(eingabe) - 1]; case 2: // Zehner und Einer behandeln if (eingabe.equals("11")) { return "elf"; } else if (eingabe.equals("12")) { return "zwölf"; } else { int Zehner = Integer.valueOf(eingabe.substring(0, 1)); int Einer = Integer.valueOf(eingabe.substring(1, 2)); if (Zehner == 1) { return (Einer != 0 ? ZahlenVorsilben[Einer - 1] : "") + ZehnerZahlen[Zehner - 1]; // ohne "und" } else { return (Einer != 0 ? ZahlenVorsilben[Einer - 1] + "und" : "") + ZehnerZahlen[Zehner - 1]; // mit "und" } } case 3: // Hunderter String rest = eingabe.substring(1, 3); int Hunderter = Integer.valueOf(eingabe.substring(0, 1)); if (Integer.valueOf(rest) == 0) { return ZahlenVorsilben[Hunderter - 1] + "hundert"; } else { return ZahlenVorsilben[Hunderter - 1] + "hundert" + KonvertertiereZahl(rest); } case 4: // Tausender rest = eingabe.substring(1, 4); int Tausender = Integer.valueOf(eingabe.substring(0, 1)); if (Integer.valueOf(rest) == 0) { return ZahlenVorsilben[Tausender - 1] + "tausend"; } else { return ZahlenVorsilben[Tausender - 1] + "tausend" + KonvertertiereZahl(rest); } case 5: // Zehn-Tausender rest = eingabe.substring(2, 5); if (Integer.valueOf(VordereNullenLöschen(rest)) == 0) { return KonvertertiereZahl(eingabe.substring(0, 2)) + "tausend"; } else { return KonvertertiereZahl(eingabe.substring(0, 2)) + "tausend" + KonvertertiereZahl(rest); } case 6: // Hundert-Tausender rest = eingabe.substring(3, 6); if (Integer.valueOf(VordereNullenLöschen(rest)) == 0) { return KonvertertiereZahl(eingabe.substring(0, 3)) + "tausend"; } else { return KonvertertiereZahl(eingabe.substring(0, 3)) + "tausend" + KonvertertiereZahl(rest); } default: return "Illegal String"; } } public static String ErsetzteAlleZahlen(String eingabe) { if (p == null) p = Pattern.compile("[+-]?[0-9]+"); Matcher m = p.matcher(eingabe); String neu = ""; int pos = 0; while ( m.find() ) { neu = neu + eingabe.substring(pos, m.start()) + KonvertertiereZahl(eingabe.substring(m.start(), m.end())); pos = m.end(); } neu = neu + eingabe.substring(pos, eingabe.length()); return neu; }
Ich werde mir eure Lösungen ansehen und hoffentlich was draus lernen
Gruß
Erik
EDIT:
Zitat von Matthias Reitinger
Ähhhmm. Ich hoffe meine Abgabe zählt überhaupt?
Geändert von Erik (17.01.10 um 18:50 Uhr)
Ähnliche Themen
-
[QUIZ#17] thilos (java)
Von thilos im Forum ArchivAntworten: 0Letzter Beitrag: 13.08.10, 01:33 -
Quiz XML mit Java DOM
Von Simon Berger im Forum XML TechnologienAntworten: 1Letzter Beitrag: 16.06.10, 08:20 -
[QUIZ#14] Jellysheep (Java)
Von Jellysheep im Forum ArchivAntworten: 0Letzter Beitrag: 27.03.10, 19:09 -
[QUIZ#9] BastianX75 (Java)
Von BastianX75 im Forum ArchivAntworten: 0Letzter Beitrag: 22.07.09, 09:16 -
Quiz mit Java?
Von fraus im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 13.07.01, 10:22





Login





