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 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