Arabische Ziffern in römische Ziffern

ifschleife

Mitglied
Hallo Leute,
bin gerade dabei arab. Ziffern in Römische umzuwanden und hänge grad auf dem Schlauch.
Hier die Aufgabenstellung:
Es gibt die Grundzahlen I, X, C und M mit den Bedeutungen 1, 10, 100 und 1000. Außerdem gibt es die Zwischenzahlen V, L und D mit den Bedeutungen 5, 50, und 500.
Gleiche Grundzahlen direkt nebeneinander werden addiert, dabei dürfen höchstens drei gleiche Grundzahlen nebeneinander stehen.
Gleiche Zwischenzahlen dürfen nicht addiert werden bzw. nicht nebeneinander stehen. Kleinere Grundzahlen rechts von größeren werden addiert – links von größeren subtrahiert. die Grundzahlen I, X, und C dürfen nur von der nächst höheren Zwischen- bzw. Grundzahl subtrahiert werden. Beispiel: I darf nur von V oder X subtrahiert werden. Zwischenzahlen dürfen nicht subtrahiert werden .
Bin jetzt erstmal soweit gekommen:
Code:
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {

        int[] Ziffern = { 1, 5, 10, 50, 100, 500, 1000 };
        String[] Buchstaben = { "I", "V", "X", "L", "C", "D", "M" };
        int eingabe;
        String ausgabe="";
        
        
        System.out.println("Geben Sie eine Zahl zwischen 1-3999 ein: ");
        Scanner in = new Scanner(System.in);
        eingabe = in.nextInt();
        
        for (int i = 1000; i = 1; i = i / 10) {

        }
    }

}
Kann mir jemand weiterhelfen?
 
Was mMn hier das Geheimnis ist, arbeite mit Modular.

wir speichern die Zahl in einer Integer Variable, wir benötigen aber noch zwei weitere Hilfsvariablen, wenn du die Zahl selbst noch brauchst, dann noch eine weitere Variable

zuerst rechnest du durch 1000

was kommt Modular raus?
Rest = Zahl%1000
Anz = Zahl/1000

Da wir mit Integer arbeiten, hast du in Anz das Ergebnis von "M" die du setzen musst.
In Rest dagegen ist jetzt die Zahl mit der du weiter rechnest

Zahl = Rest

Jetzt müssen wir durch 100 rechnen
Rest = Zahl%100
Anz = Zahl/100

Was wir dann beachten müsssen:
Anz = 9? ==> dann füge "CM" hinzu
Anz >= 5? ==> dann füge "D" hinzu und rechne Anz = Anz-5; füge dann Anz an "C" hinzu.
Anz = 4 ==> dann füge "CD" hinzu
Anz > 0 ==> füge Anz an "C" hinzu"

Zahl = Rest
....

hoffe das Prinzip ist klar.
den Code habe ich bewusst nicht geschrieben, sondern nur versucht zu erklären wie er aufgebaut sein sollte😉
 

Zurück
Oben