Römische Zahlen in Java

Sheeraz Gul 12 Oktober 2023
Römische Zahlen in Java

Dieses Tutorial zeigt, wie man in Java ganze Zahlen in römische Zahlen umwandelt.

Römische Zahlen in Java

Das Umwandeln der ganzen Zahlen in römische Zahlen ist häufig erforderlich, wenn Sie in Java arbeiten. Meistens wird diese Frage bei Interviews mit den TOP-IT-Unternehmen gestellt.

Römische Ziffern sind die Zeichendarstellung von Zahlen; wir können diese Zahlen normalerweise in Uhren oder Musiktheorie finden. Es gibt insgesamt sieben Buchstaben, die verwendet werden, um eine Zahl in lateinischen Schriftzeichen darzustellen; siehe folgende Tabelle:

römisch Zahlen
ICH 1
IV 4
v 5
IX 9
X 10
XL 40
L 50
XC 90
C 100
CD 400
D 500
CM 900
M 1000

Die römischen Ziffern werden normalerweise von links nach rechts und von der höchsten zur niedrigsten geschrieben. Die obige Tabelle zeigt, dass wir eine römische Zahl nicht mehr als dreimal verwenden können; zum Beispiel schreiben wir 4 wie IV, aber nicht IIII.

Versuchen wir nun, in Java einen Ansatz zu erstellen, um ganze Zahlen in römische Zahlen umzuwandeln. Folgen Sie den unteren Schritten:

  • Zuerst müssen wir zwei Arrays erstellen, eines für die römische Zahl und eines für ganze Zahlen.
  • Erstellen Sie dann eine Instanz der String Builder-Klasse.
  • Der nächste Schritt besteht darin, die ganze Zahl mit römischen Zahlen zu vergleichen.
  • Wenn die Ganzzahl >= ist, dann die höchste römische Zahl, müssen wir sie der String-Builder-Instanz hinzufügen und ihren Wert von der Eingabenummer reduzieren.
  • Wenn die Ganzzahl < ist, dann die höchste römische Zahl, müssen wir auf die höchste römische Zahl prüfen und den Vorgang wiederholen, bis die eingegebene Zahl 0 ist.
  • Der letzte String Builder wird die konvertierte römische Zahl sein.

Versuchen wir nun, ein Java-Programm basierend auf den obigen Schritten zu implementieren:

package delftstack;

public class Example {
  public static void IntegerToRoman(int DemoInteger) {
    System.out.println("The Integer Number is : " + DemoInteger);
    int[] IntegerValues = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
    String[] RomanValues = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
    StringBuilder RomanNumber = new StringBuilder();
    for (int x = 0; x < IntegerValues.length; x++) {
      while (DemoInteger >= IntegerValues[x]) {
        DemoInteger = DemoInteger - IntegerValues[x];
        RomanNumber.append(RomanValues[x]);
      }
    }
    System.out.println("The Roman Numeral for given number is: " + RomanNumber.toString());
  }
  public static void main(String args[]) {
    IntegerToRoman(121);
    IntegerToRoman(280);
    IntegerToRoman(999);
    IntegerToRoman(1000);
    IntegerToRoman(1100);
  }
}

Der obige Code konvertiert die angegebene Ganzzahl in römische Ziffern. Siehe die Ausgabe:

The Integer Number is : 121
The Roman Numeral for given number is: CXXI
The Integer Number is : 280
The Roman Numeral for given number is: CCLXXX
The Integer Number is : 999
The Roman Numeral for given number is: CMXCIX
The Integer Number is : 1000
The Roman Numeral for given number is: M
The Integer Number is : 1100
The Roman Numeral for given number is: MC

Dies ist nicht die einzige Möglichkeit, die ganzen Zahlen in römische Zahlen umzuwandeln. Wir können auch vier statt zwei Arrays erstellen; diese vier Arrays sind für römische Zahlen in Form von Einheiten, Zehnern, Hundertern und Tausendern; und dann können wir diese Arrays verwenden, um römische Ziffern für die angegebene Zahl zu generieren, indem wir dieselbe String-Builder-Methode verwenden, siehe das Beispiel:

package delftstack;

public class Example {
  public static String IntegerToRoman(int DemoIntger) {
    String[] ThousandsRoman = {"", "M", "MM", "MMM"};
    String[] HundredsRoman = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
    String[] TensRoman = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
    String[] UnitsRoman = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};
    return ThousandsRoman[DemoIntger / 1000] + HundredsRoman[(DemoIntger % 1000) / 100]
        + TensRoman[(DemoIntger % 100) / 10] + UnitsRoman[DemoIntger % 10];
  }
  public static void main(String args[]) {
    int[] Integers = {
        17, 23, 48, 53, 181, 191, 147, 150, 105, 128, 199, 98, 212, 2181, 3118, 1100, 1111};
    for (int DemoInteger : Integers) {
      System.out.printf("Integer %4d -> Roman %8s\n", DemoInteger, IntegerToRoman(DemoInteger));
    }
  }
}

Der obige Code konvertiert das angegebene Array von Ganzzahlen nacheinander in die römischen Ziffern. Siehe Ausgabe:

Integer   17 -> Roman     XVII
Integer   23 -> Roman    XXIII
Integer   48 -> Roman   XLVIII
Integer   53 -> Roman     LIII
Integer  181 -> Roman   CLXXXI
Integer  191 -> Roman     CXCI
Integer  147 -> Roman   CXLVII
Integer  150 -> Roman       CL
Integer  105 -> Roman       CV
Integer  128 -> Roman  CXXVIII
Integer  199 -> Roman    CXCIX
Integer   98 -> Roman   XCVIII
Integer  212 -> Roman    CCXII
Integer 2181 -> Roman MMCLXXXI
Integer 3118 -> Roman MMMCXVIII
Integer 1100 -> Roman       MC
Integer 1111 -> Roman     MCXI

Wenn Sie in Ihrem Code keine Arrays verwenden möchten, können Sie auch die Maps verwenden, in denen wir den Wert jeder Ganzzahl mit ihren Ziffern eingeben und sie dann verwenden, um Ganzzahlen in römische Ziffern umzuwandeln. Siehe das Beispiel:

package delftstack;

import java.util.LinkedHashMap;
import java.util.Map;
public class Example {
  public static String ConvertedRomanNumerals(int DemoInteger) {
    LinkedHashMap<String, Integer> RomanNumeralsMap = new LinkedHashMap<String, Integer>();

    RomanNumeralsMap.put("M", 1000);
    RomanNumeralsMap.put("CM", 900);
    RomanNumeralsMap.put("D", 500);
    RomanNumeralsMap.put("CD", 400);
    RomanNumeralsMap.put("C", 100);
    RomanNumeralsMap.put("XC", 90);
    RomanNumeralsMap.put("L", 50);
    RomanNumeralsMap.put("XL", 40);
    RomanNumeralsMap.put("X", 10);
    RomanNumeralsMap.put("IX", 9);
    RomanNumeralsMap.put("V", 5);
    RomanNumeralsMap.put("IV", 4);
    RomanNumeralsMap.put("I", 1);

    String RomanResult = "";

    for (Map.Entry<String, Integer> MapEntry : RomanNumeralsMap.entrySet()) {
      int MatchedInteger = DemoInteger / MapEntry.getValue();
      RomanResult = RomanResult + RepeatProcess(MapEntry.getKey(), MatchedInteger);
      DemoInteger = DemoInteger % MapEntry.getValue();
    }
    return RomanResult;
  }
  public static String RepeatProcess(String Roman, int DemoInteger) {
    if (Roman == null) {
      return null;
    }
    final StringBuilder DemoRomanBuilder = new StringBuilder();
    for (int i = 0; i < DemoInteger; i++) {
      DemoRomanBuilder.append(Roman);
    }
    return DemoRomanBuilder.toString();
  }

  public static void main(String args[]) {
    for (int x = 1; x < 31; x++) {
      System.out.println("Integer = " + x + " -> Roman = " + ConvertedRomanNumerals(x));
    }
  }
}

Der obige Code verwendet Map, um die ganze Zahl in römische Zahlen umzuwandeln. Dieser Code konvertiert die ganzen Zahlen von 1 bis 30 in die römischen Ziffern. Siehe Ausgabe:

Integer = 1 -> Roman = I
Integer = 2 -> Roman = II
Integer = 3 -> Roman = III
Integer = 4 -> Roman = IV
Integer = 5 -> Roman = V
Integer = 6 -> Roman = VI
Integer = 7 -> Roman = VII
Integer = 8 -> Roman = VIII
Integer = 9 -> Roman = IX
Integer = 10 -> Roman = X
Integer = 11 -> Roman = XI
Integer = 12 -> Roman = XII
Integer = 13 -> Roman = XIII
Integer = 14 -> Roman = XIV
Integer = 15 -> Roman = XV
Integer = 16 -> Roman = XVI
Integer = 17 -> Roman = XVII
Integer = 18 -> Roman = XVIII
Integer = 19 -> Roman = XIX
Integer = 20 -> Roman = XX
Integer = 21 -> Roman = XXI
Integer = 22 -> Roman = XXII
Integer = 23 -> Roman = XXIII
Integer = 24 -> Roman = XXIV
Integer = 25 -> Roman = XXV
Integer = 26 -> Roman = XXVI
Integer = 27 -> Roman = XXVII
Integer = 28 -> Roman = XXVIII
Integer = 29 -> Roman = XXIX
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook