Ich muss ein Programm in Java schreiben, in dem ein Benutzer eine römische Zahl eingibt und diese dann in eine normale Zahl umgewandelt wird. Hilfe?

Das Programm zur Umwandlung von normal zu römisch - (programmieren, Java) Mein Ansatz von römisch zu normal  - (programmieren, Java)

4 Antworten

öööhhh was in Gottes namen.

das geht wohl etwas geschickter.

ein kleiner Algorithmus in einer scheide, wäre ein gescheiterer ansatz.

Phil2712 
Fragesteller
 04.06.2017, 13:30

ich muss es aber mit switch-case lösen

0
PWolff  04.06.2017, 14:12
@Phil2712

Für switch-case denke ich hierbei zuerst an dies:

switch(letter) {
case "I": lettervalue = 1; break;
case "V": lettervalue = 5; break;
case "X": lettervalue = 10; break;
case "L": lettervalue = 50; break;
case "C": lettervalue = 100; break;
case "D": lettervalue = 500; break;
case "M": lettervalue = 1000; break;
default: throw new ArgumentException(...); //sorry, das ist vermutlich mehr C# als Java
};

und dann je nach dem vorhergehenden Buchstaben den vorhergehenden Buchstaben abzuziehen oder zu addieren.

Oder erst mal den Wert jedes Buchstabens erst mal addieren und, falls der Wert des nächsten Buchstabens größer ist, zwei mal zu subtrahieren.

Aber die einzelnen Werte in je einer eigenen Schleife ... brrr.

2

Kann es ein, dass in beiden Programmen ignoriert wir, dass z.B.
IX = 9
ist und nicht gleich 11?
Oder sehe ich da was falsch?
Dann ignoriert mich.

Phil2712 
Fragesteller
 04.06.2017, 13:41

im ersten programm = 9 : VIIII

0
hairybear  04.06.2017, 13:53
@Phil2712

Dann ist 100 = VIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

0

Zu jeder Standardübung gibt es auch eine Standardlösung im Internet zu finden ... In diesem Fall z. B. bei

https://www.google.de/search?q=roman+to+decimal+vice+versa+implement&btnG=Suche

(oder bei https://www.google.de/search?q=roman+to+decimal+implement&btnG=Suche )

Woher ich das weiß:Berufserfahrung – Software-Entwickler
PWolff  04.06.2017, 14:22

Alternative Lösung: du gehst an einen Computer, wo Excel (oder eine andere Tabellenkalkulation mit einer vergleichbaren Funktion) installiert ist, und verwendest die Funktion "RÖMISCH", um dir je Umwandlungsrichtung 3999 case-Anweisungen erzeugen zu lassen. Mehr sind es ja normalerweise nicht.

Zelle A20: 20

Zelle B20: =RÖMISCH(A20)

Zelle C20: ="    case "&A20&": result="""&B20&"""; break;"

Zelle D20: ="    case "&B20&": result="&A20&"; break;"

Diese Zellen entsprechend auf Zeilen 1 bis 3999 übertragen.

Dann einfach Spalte C bzw. Spalte D in einen switch-Block reinkopieren.

Dein Dozent wird dann eine "besondere" Meinung von deiner Lösung haben. Leg vorsichtshalber das Excel-Sheet dazu ...

0
PWolff  04.06.2017, 14:30
@PWolff

Kleiner Fehler: Für Spalte D muss es heißen:

Zelle D20: ="    case """&B20&""": result="&A20&"; break;"

(und für gnumeric muss man statt "" \" verwenden; auch in Spalte C)

0