Es ist ein Problem, das in Interviews mit führenden IT-Unternehmen häufig gestellt wird Google, Amazon, TCS, Und Accenture, usw. Durch die Lösung des Problems möchte man die logischen Fähigkeiten, das kritische Denken und die Problemlösungsfähigkeiten des Befragten überprüfen. In diesem Abschnitt werden wir also diskutieren wie man in Java eine Ganzzahl in eine römische Zahl umwandelt mit unterschiedlichen Ansätzen und Logiken. Außerdem werden wir dafür Java-Programme erstellen.
Römische Zahlen
Römische Ziffern sind die symbolische Darstellung von Zahlen. Diese werden normalerweise in Zifferblättern, in der Musiktheorie usw. verwendet. Es gibt sie Sieben Buchstaben zur Darstellung römischer Ziffern. In der folgenden Tabelle sind die römischen Ziffern und die entsprechenden Dezimalwerte aufgeführt.
Konvertieren Sie einen String in eine Ganzzahl
Charakter | Römische Ziffer |
---|---|
ICH | 1 |
IN | 5 |
X | 10 |
L | fünfzig |
C | 100 |
D | 500 |
M | 1000 |
Römische Ziffern haben folgende Eigenschaften:
Normalerweise wird es von links nach rechts vom höchsten zum niedrigsten Wert geschrieben, mit Ausnahme einiger Sonderfälle (wo das linke Zeichen kleiner ist als das rechte Zeichen). Beispielsweise entspricht IV in römischen Ziffern 4. Es kann nicht als IIII geschrieben werden.
In einem solchen Fall subtrahieren wir den Wert des linken Zeichens vom Wert des rechten Zeichens. Beispielsweise beträgt IV 5-1=4. Auf die gleiche Weise wird IX 10-1=9 sein.
Betrachten Sie die folgenden Fälle:
- Die römische Zahl I kann vor V oder X platziert werden und steht für die Subtraktion von eins. Zum Beispiel ist IV (5-1) = 4 und 9 ist IX (10-1) = 9.
- Die römische Zahl X kann vor L oder C stehen und steht für die Subtraktion von zehn. Beispiel: XL (50-10) = 40 und XC (100-10) = 90.
- Die römische Zahl C vor D oder M steht für die Subtraktion von Hundert. Beispiel: CD (500-100) = 400 und CM (1000-100) = 900.
Ansatz
Ein Ansatz zur Umwandlung von Ganzzahlen in römische Zahlen ist einfach. Erstellen Sie zunächst zwei Arrays, eines zum Speichern der Werte römischer Ziffern und eines zum Speichern der entsprechenden Buchstaben. Erstellen Sie eine Instanz der StringBuilder-Klasse. Vergleichen Sie nun die ganze Zahl mit römischen Ziffern und gehen Sie wie folgt vor:
- Wenn die Eingabenummer >= höchste römische Zahl ist, fügen Sie sie zum String-Builder hinzu und reduzieren Sie den entsprechenden Wert aus der Eingabenummer.
- Wenn die Eingabenummer ist
Der StringBuilder ist die entsprechende römische Zahl.
Lassen Sie uns die obigen Schritte anhand eines Beispiels verstehen.
Datenbankdesign in DBMS
Beispiel
Angenommen, wir müssen 36 in römische Zahlen umwandeln. Vergleichen Sie die Ganzzahl wie folgt mit römischen Werten.
1000>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
900>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
500>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
400>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
100>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
90>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
50>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
40>36 = ja, prüfen Sie mit der nächsten römischen Ziffer.
str zu int
10<36, add corresponding literal 'x' to result, result='X,' n='36-10=26</p'>
10<26, add corresponding literal 'x' to result, result='XX,' n='26-10=16</p'>
10<16, add corresponding literal 'x' to result, result='XXX,' n='16-10=6</p'>
10>6, mit der nächsten römischen Ziffer prüfen, Ergebnis =XXX
9>6, mit der nächsten römischen Ziffer prüfen, Ergebnis =XXX
5<6, add corresponding literal 'v' to result, result='XXXV,' n='6-5=1</p'>
5>1, mit der nächsten römischen Ziffer prüfen, Ergebnis =XXXV
Karten Java
4>1, mit der nächsten römischen Ziffer prüfen, Ergebnis =XXXV
1==1, entsprechendes Literal „I“ zum Ergebnis hinzufügen, Ergebnis =XXXVI, N = 1-1=0
Ergebnis = XXXVI
Java-Programm zum Konvertieren von Ganzzahlen in römische Ziffern
IntegerToRoaman.java
public class IntegerToRoman { public static void intToRoman(int num) { System.out.println('Integer: ' + num); int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] romanLetters = {'M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'}; StringBuilder roman = new StringBuilder(); for(int i=0;i= values[i]) { num = num - values[i]; roman.append(romanLetters[i]); } } System.out.println('Corresponding Roman Numerals is: ' + roman.toString()); } public static void main(String args[]) { intToRoman(125); intToRoman(252); intToRoman(1000); intToRoman(1010); } }
Ausgabe:
Eine andere Möglichkeit, römische Zahlen zu drucken, besteht darin, vier Arrays mit Stellenwerten zu erstellen. Zum Beispiel Einheit, Zehner, Hunderter und Tausender. Anschließend wird der Stellenwert berechnet und in römische Zahlen umgewandelt.
IntegerToRoman.java
public class IntegerToRoman { //method to convert integer to roman //function that converts integer to roman public static String intToRoman(int number) { //creating array of place values String[] thousands = {'', 'M', 'MM', 'MMM'}; String[] hundreds = {'', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM'}; String[] tens = {'', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC'}; String[] units = {'', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'}; return thousands[number / 1000] + hundreds[(number % 1000) / 100] + tens[(number % 100) / 10] + units[number % 10]; } public static void main(String args[]) { //creating an array of integers to be convert into roman int[] numbers = {13, 21, 38, 50, 190, 141, 117, 120, 125, 138, 149, 6, 712, 181, 197, 918, 199, 1100, 1101, 1248, 1253}; for (int number : numbers) { System.out.printf('%4d -> %8s ', number, intToRoman(number)); } } }
Ausgabe:
Hinweis: Das obige Java-Programm funktioniert bis 3999 einwandfrei.
Drucken Sie römische Ziffern in einem bestimmten Bereich
DecimaltoRoman.java
import java.util.LinkedHashMap; import java.util.Map; public class DecimaltoRoman { public static String RomanNumerals(int num) { LinkedHashMap romanNumerals = new LinkedHashMap(); //storing roman letters and corresponding decimal values in HashMap romanNumerals.put('M', 1000); romanNumerals.put('CM', 900); romanNumerals.put('D', 500); romanNumerals.put('CD', 400); romanNumerals.put('C', 100); romanNumerals.put('XC', 90); romanNumerals.put('L', 50); romanNumerals.put('XL', 40); romanNumerals.put('X', 10); romanNumerals.put('IX', 9); romanNumerals.put('V', 5); romanNumerals.put('IV', 4); rssomanNumerals.put('I', 1); //variable for string the result String result = ''; //loop iterate over Map for(Map.Entry entry : romanNumerals.entrySet()) { int matches = num/entry.getValue(); result = result+repeat(entry.getKey(), matches); num = num % entry.getValue(); } return result; } public static String repeat(String s, int n) { if(s == null) { return null; } final StringBuilder sb = new StringBuilder(); for(int i = 0; i <n; 1 200 i++) { sb.append(s); } converts into string return sb.tostring(); driver code public static void main(string args[]) prints roman numerals from to for (int i="1;i" '+romannumerals(i)); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/coding-problems/50/convert-integer-roman-numerals-java-4.webp" alt="Convert Integer to Roman Numerals in Java"> <p>Besides the above methods, there are various ways to convert integer to roman such as Using TreeMap, using switch case, etc. </p> <hr></n;>6,>16,>26,>
Äquivalenzgesetze36,>