Frage von Cacikci, 99

An die Programmierer : ich muss in JAVA einen int wert einlesen und als String wieder ausgeben zB 3 --> drei kann mir da bitte jemand helfen?

Antwort
von ceevee, 25

Wie sieht dein bisheriger Ansatz aus? Die Übung hätte auch ein guter Programmierer wahrscheinlich nicht mal eben in 10 Minuten aus den Fingern geschüttelt, weil da einiges an Code nötig wäre. Generell würde ich mit Arrays arbeiten, in denen die Zahlen als Strings gespeichert sind und den Wertebereich beim Entwickeln immer größer werden lassen.

Z.B.: Ich hätte ein Array mit den Werten bis einschließlich 20 (also ["", "Eins", "Zwei", "Drei", ... , "Neunzehn", "Zwanzig"] (=> Variable zahlArray). Ist die eingegebene Zahl <= 20, dann könnte man das direkt übersetzen, also z.B.

zahl = 13;

zahlWort = zahlArray[zahl] = "Dreizehn";

Wenn die Zahl >20 und <100 ist, dann bräuchtest ein zweites Array mit den Präfixen also ["", "", "Zwanzig", "Dreißig", "Vierzig", ... , "Neunzig"] => Variable praefixArray). Anschließend guckst du dir die erste und die zweite Stelle an (an die kommst du am einfachsten, indem du die Zahl temporär in einen String umwandelst). Wenn die zweite Stelle ungleich 0 ist, dann ist das Zahlwort

zahl = 49;

zahlString = zahl.toString(); // "49"

zahlWort = zahlArray[zahlString[1]] + "und" + praefixArray[zahlString[0]];

Also in dem Fall 49 = "Neun" + "und" + "Vierzig");

ansonsten ist es nur PraefixArray, also z.B.

zahl = 30;

zahlString = zahl.toString(); // "40"

zahlWort = praefixArray[zahlString[0]]; // dreißig.

Wenn die Zahl dann noch größer wird, dann kannst du das ganze  (möglicherweise sogar mit den beiden Arrays erweitern). Bei Zahlen >= 100 und < 1000 etwa

z.B. 345 = "Drei" + "Hundert" + "Fünf" + "und" + "Vierzig".

und dann noch weiter

6239 = "Sechs" + "Tausend" + "Zwei" + "Hundert" + "Neun" + "und"+ "Dreißig".

du musst halt bloß für jede Stelle das passende Wort finden. Später könnte man an dem Code noch einiges optimieren und kürzen, aber das ist Formsache.

Die Codebeispiele in meiner Antwort sind nicht Java, sondern nur Pseudocode, um das Prinzip zu erklären. Wie gesagt, man könnte dir besser helfen, wenn man sehen würde, was du schon programmiert hast und wo es bei dir konkret hakt.

Antwort
von TUrabbIT, 59

Das dürfte dir helfen;

https://graberj.wordpress.com/2011/01/11/java-string-von-der-kommandozeile-lesen...

https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html

Ansonsten werde konkreter wo du Hilfe brauchst.

Antwort
von androhecker, 40

Bis zu welchem Wert denn?

Bei (-20)-0-20 einfach einen Switch benutzen oder die Werte in einem Array speichern. Bei Zahlen bis hundert dann einfach die Zahlen in ihre Ziffern zerlegen und das Wort richtig zusammensetzen.
Bei 1000+ ist es wieder einfacher, die Zahl in Dreierblöcken genauso wie oben einlesen und an die entsprechenden Blöcke noch -tausend, -million, etc anfügen.
Man muss noch etwas mehr beachten, aber das solltest du auch selber merken.

Kommentar von Cacikci ,

Es gibt kein werte Bereich. Der Wert soll eingelesen werden von einem Scanner und dieser eingelesener wert also zB 100 soll dann als String also "hundert" ausgegeben werden

Kommentar von androhecker ,

Nun, dann musst du wohl die Methoden wie beschrieben kombinieren, eben bis zu Milliarden, etwas höheres als das lässt sich mit einer int nicht darstellen.

Antwort
von hummelxy, 21

Als Ergänzung zu den gegebenen Antworten: eine Integer Variable kannst du ganz einfach mit + ""; zu einem String konvertieren. Natürlich in einer neuen Variablen speichern!

Expertenantwort
von KnusperPudding, Community-Experte für Java, 35

Wenn du Fragen stellst, bei denen du eine wirkliche Hilfestellung erwartest, würde ich dich im Gegenzug dazu bitten die Frage entsprechend genau zu stellen.

Anhand dem was man aus deiner Frage ableiten kann, kann man leider nur raten was du meinen könntest.

Bei Programmier-Fragen geht man einfach nicht davon aus, "was du wohl meinen könntest", sondern man möchte Konkret wissen, worin dein Problem besteht um dir helfen zu können. - Immerhin steckt derjenige, der eine Antwort schreibt ja auch Energie rein um dein Problem zu lösen. Also sei bitte so fair.

Hierfür gibt es im Detail-Bereich der Frage ein großes Textfeld in dem du deine Frage genau ausformulieren kannst. Des weiteren gibt es auch eine Code-Funktion, mti der du deine Codebeispiele Posten kannst. Genauso gäbe es auch alternativ Code-Hoster, die deinen Code mit Syntax-Highlight kostenlos und unkompliziert hosten, wie z.B.: "Hastebin.com".

Des weiteren:

Sag mal hast du die Frage nicht verstanden ?! Es geht darum mit dem Scanner einen integer einzulesen und diese eingelesene Zahl als String wieder auszugeben !

Ein ziemlich forscher Ton, der bei der Community sicherlich nicht sehr gut ankommt. Die du jedoch um Hilfe bittest.

Davon abgesehen glaube ich, dass niemand deine Frage so richtig verstanden hat. 

Entsprechend würde ich dich bitten:

  • Deine Frage nachträglich zu ergänzen
  • Solche Kommentare zu unterlassen
  • Und später die Frage ggf. mit "Noch eine Antwort bitte" nochmal zu aktualisieren.

Die Community hat viele Hilfsbereite Menschen in den diversen Themenbereichen die gerne bereit sind zu helfen.

Kommentar von Cacikci ,

Wenn ich aber sage ich soll werte mit einem Scanner einlesen lassen und dann eine Antwort kommt wie "Kauf dir einen Scanner " kommt es so rüber als ob diese Person mich veräppeln will. Jeder der mit Java programmiert weiss was ein Scanner ist

Kommentar von KnusperPudding ,

Jeder der mit Java programmiert weiss was ein Scanner ist

Mag ja sein. Manche denken sich aber auch: "Auf eine blöde Frage kann ich nur mit einer blöden Antwort antworten".

Wenn die Frage nämlich nur aus einer Überschrift besteht und sehr ungenau ist, fassen das nun mal auch viele so auf als wolltest du sie veräppeln.

Und genau aus dem Grund habe ich diese Antwort geschrieben. - Daher würde ich stets empfehlen die Frage am besten vollständig und neu zu stellen.

Kommentar von androhecker ,

Die Frage selbst ist wirklich undeutlich formuliert, aber wenn man sich das Beispiel etwas genauer anschaut, sollte man die Frage verstehen.

Kommentar von KnusperPudding ,

Wenn man sich das Beispiel genauer anschaut... dann könnte man erraten was gemeint sein könnte. Richtig.

Jedoch aufgrund einer Vermutung zu antworten ist sehr schwer. - Und dann ggf. eine Arbeit völlig um sonst machen weil was anderes gemeint sein könnte, ist nicht sehr motivierend.

Dennoch würde man auch noch erwarten, dass der Fragesteller in sein Problem bereits Zeit investiert hat und nicht einfach andere seine Hausaufgaben machen lässt.

Vor allem kannst du hier raus lesen: Was genau das Problem des Fragestellers ist? Ein konzeptionelles Problem? Die Gestaltung der Methoden? Fehlendes Wissen der Syntax?

Ich finde: Wenn man Hilfe erwartet, sollte man auch im gleichen Maße seine Frage ordentlich definieren. - Immerhin steckst du ja genauso Zeit in die Beantwortung der Fragen. Da ist es doch nicht zuviel verlangt.

Kommentar von SirNik ,

Und der Fragesteller sollte es sich nicht mit dir, KnusperPudding, oder dir, androhecker, verscherzen, sonst antwortet ihr ihm bestimmt gar nicht mehr. Und dann hat er den Salat....ihr seid eine der Kompetentesten und wer soll ihm dann noch antworten? ;)

Kommentar von KnusperPudding ,

Wir helfen ja auch alle gerne. - Und damit man sich nicht im Ton vergreift versuche ich das mit solchen Antworten einem Fragesteller nahe zu bringen, welche Erwartungshaltung man als Potentieller Helfer hat.

Antwort
von LeonardM, 20

Einfach ne replace Funktion?

Antwort
von prototype0815, 28

System.out.println(" Bitte einen String eingeben und mit Enter bestätigen");
Scanner sc = new Scanner(System.in);
System.out.println(sc.nextLine());

Kann sein das du noch in deiner IDE in die Konsole klicken musst um einen Text eingeben zu können

Keine passende Antwort gefunden?

Fragen Sie die Community