Java :: Aufgabe #214 :: Lösung #1
3 Lösungen

#214
Teufelskreis einer selbstbezüglichen Aussage
Anfänger - Java
von hollst
- 17.12.2018 um 18:46 Uhr
Die folgende Aussage sei gegeben als String:
"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.
Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,
denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?
Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.
Viel Spaß!
"Dieser Satz hat vierzig Buchstaben sowie einen Punkt."
Die Aussage ist natürlich falsch, denn der Satz hat tatsächlich fünfundvierzig Buchstaben.
Ersetzen wir nun in der Aussage das Wort "vierzig" durch "fünfundvierzig" bleibt die Aussage aber trotzdem falsch,
denn der neue Satz hat zweiundfünfzig Buchstaben. Schöner Teufelskreis, oder?
Schreibe ein Programm mit dem überprüft wird, ob es überhaupt eine (ausgeschriebene) Zahl gibt, die oben zu einer wahren Aussage führt.
Viel Spaß!
#1

von just_a_noob (60 Punkte)
- 02.02.2019 um 14:10 Uhr
Wahrscheinlich sehr umständlich gelöst aber es geht :)
Java-Code

import java.util.Scanner; public class ZahlTextAussage { private static String zahlZuText(int zahl) { String textzahl = "leer"; String einsbiszwölf[] = {"ein","zwei","drei","vier","fünf","sechs","sieben","acht","neun","zehn","elf","zwölf","sechzehn","siebzehn"}; String zehner[] = {"zehn","zwanzig","dreißig","vierzig","fünfzig","sechzig","siebzig","achtzig","neunzig"}; String und = "und"; if(zahl <= 12) { textzahl = String.valueOf(einsbiszwölf[zahl-1]); } if (zahl >=13 && zahl <=15){ int zehnerindex = zahl / 10; int einerIndex = zahl % 10; textzahl = String.valueOf( einsbiszwölf[einerIndex-1]+zehner[zehnerindex-1] ); } if(zahl == 16) { textzahl = String.valueOf(einsbiszwölf[12]); } if(zahl == 17) { textzahl = String.valueOf(einsbiszwölf[13]); } if (zahl == 20 || zahl == 30 || zahl == 40 || zahl == 50 || zahl == 60 || zahl == 70 || zahl == 80 || zahl == 90){ int zehnerindex = zahl / 10; textzahl = String.valueOf(zehner[zehnerindex-1]); } if(zahl >=18 && zahl <= 19 || zahl >=21 && zahl <= 29 || zahl >= 31 && zahl <= 39 || zahl >= 41 && zahl <= 49 || zahl >= 51 && zahl <= 59 || zahl >= 61 && zahl <= 69 || zahl >= 71 && zahl <= 79 || zahl >= 81 && zahl <= 89 || zahl >= 91 && zahl <= 99) { int zehnerindex = zahl / 10; int einerIndex = zahl % 10; textzahl = String.valueOf( einsbiszwölf[einerIndex-1]+und+zehner[zehnerindex-1] ); } return textzahl; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String satz1 = "Dieser Satz hat "; String satz2 = " Buchstaben sowie einen Punkt."; for (int zahl = 1; zahl <= 99; zahl++) { String zsm = satz1 + zahlZuText(zahl) + satz2; if (zahl == zsm.length()) { System.out.printf("%s\n", zsm); System.out.printf("Die Länge des Satzes beträgt %d", zsm.length()); break; } } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1