logo

Convertiți numere întregi în numere romane în Java

Este o problemă frecvent pusă în interviuri cu companii IT de top precum Google, Amazon, TCS, și Accenture, etc. Prin rezolvarea problemei, se dorește să se verifice capacitatea logică, gândirea critică și abilitatea de a rezolva problemele intervievatului. Deci, în această secțiune, vom discuta cum se transformă un întreg în roman în Java cu abordări și logică diferite. De asemenea, vom crea programe Java pentru același lucru.

Convertiți numere întregi în numere romane în Java

Numere romane

Numerele romane sunt reprezentarea simbolică a numerelor. Acestea sunt de obicei folosite în fețe de ceas, teoria muzicii etc. Există Șapte litere folosite pentru a reprezenta cifrele romane. Următorul tabel reprezintă cifrele romane și valorile zecimale corespunzătoare.

Caracter Numerele romane
eu 1
ÎN 5
X 10
L cincizeci
C 100
D 500
M 1000

Numerele romane au următoarele proprietăți:

De obicei este scris de la cel mai mare la cel mai mic de la stânga la dreapta, cu excepția unor cazuri speciale (unde caracterul din stânga este mai mic decât caracterul din dreapta). De exemplu, cu cifre romane IV este echivalent cu 4. Nu se poate scrie ca IIII.

arraylist java

Într-un astfel de caz, scădem valoarea caracterului din stânga din valoarea caracterului din dreapta. De exemplu, IV va fi 5-1=4. În același mod IX va fi 10-1=9.

Luați în considerare următoarele cazuri:

  • Cifra romană I poate fi plasată înaintea V sau X, reprezintă scăderea unu. De exemplu, IV (5-1) = 4 și 9 este IX (10-1) = 9.
  • Cifra romană X poate fi plasată înaintea L sau C reprezintă scăderea zece. De exemplu, XL (50-10) = 40 și XC (100-10) = 90.
  • Cifra romană C plasată înaintea lui D sau M reprezintă scăderea sutei. De exemplu, CD (500-100) = 400 și CM (1000-100) = 900.

Abordare

O abordare pentru a converti un întreg în numere romane este simplă. Mai întâi, creați două matrice, unul pentru stocarea valorilor cifrelor romane și al doilea pentru stocarea literelor corespunzătoare. Creați o instanță a clasei StringBuilder. Acum comparați întregul cu numere romane și faceți următoarele:

  • Dacă numărul de intrare este >= cel mai mare număr roman, adăugați-l la generatorul de șiruri și reduceți valoarea corespunzătoare din numărul de intrare.
  • Dacă numărul de intrare este

StringBuilder va fi cifra romană corespunzătoare.

Să înțelegem pașii de mai sus printr-un exemplu.

Exemplu

Să presupunem că trebuie să convertim 36 în cifre romane. Comparați numărul întreg cu valorile romane, după cum urmează.

1000>36 = ​​da, verificați cu următoarea cifră romană.

900>36 = ​​da, verificați cu următoarea cifră romană.

500>36 = ​​da, verificați cu următoarea cifră romană.

400>36 = ​​da, verificați cu următoarea cifră romană.

100>36 = ​​da, verificați cu următoarea cifră romană.

derivate parțiale din latex

90>36 = ​​da, verificați cu următoarea cifră romană.

50>36 = ​​da, verificați cu următoarea cifră romană.

40>36 = ​​da, verificați cu următoarea cifră romană.

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, verificați cu următoarea cifră romană, rezultat =XXX

9>6, verificați cu următoarea cifră romană, rezultat =XXX

5<6, add corresponding literal 'v' to result, result='XXXV,' n='6-5=1</p'>

5>1, verificați cu următoarea cifră romană, rezultat =XXXV

4>1, verificați cu următoarea cifră romană, rezultat =XXXV

1==1, adăugați „I” literal corespunzător la rezultat, rezultat =XXXVI, N = 1-1=0

Rezultat = XXXVI

Program Java pentru a converti numere întregi în numere romane

IntegerToRoaman.java

caracteristicile unei serii panda
 public class IntegerToRoman { public static void intToRoman(int num) { System.out.println(&apos;Integer: &apos; + num); int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] romanLetters = {&apos;M&apos;,&apos;CM&apos;,&apos;D&apos;,&apos;CD&apos;,&apos;C&apos;,&apos;XC&apos;,&apos;L&apos;,&apos;XL&apos;,&apos;X&apos;,&apos;IX&apos;,&apos;V&apos;,&apos;IV&apos;,&apos;I&apos;}; StringBuilder roman = new StringBuilder(); for(int i=0;i= values[i]) { num = num - values[i]; roman.append(romanLetters[i]); } } System.out.println(&apos;Corresponding Roman Numerals is: &apos; + roman.toString()); } public static void main(String args[]) { intToRoman(125); intToRoman(252); intToRoman(1000); intToRoman(1010); } } 

Ieșire:

Convertiți numere întregi în numere romane în Java

O altă modalitate de a tipări cifrele romane este de a crea patru matrice de valori ale locului. De exemplu, unitate, zeci, sută și mii. După aceea, calculează valoarea locului și o transformă în cifre romane.

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 = {&apos;&apos;, &apos;M&apos;, &apos;MM&apos;, &apos;MMM&apos;}; String[] hundreds = {&apos;&apos;, &apos;C&apos;, &apos;CC&apos;, &apos;CCC&apos;, &apos;CD&apos;, &apos;D&apos;, &apos;DC&apos;, &apos;DCC&apos;, &apos;DCCC&apos;, &apos;CM&apos;}; String[] tens = {&apos;&apos;, &apos;X&apos;, &apos;XX&apos;, &apos;XXX&apos;, &apos;XL&apos;, &apos;L&apos;, &apos;LX&apos;, &apos;LXX&apos;, &apos;LXXX&apos;, &apos;XC&apos;}; String[] units = {&apos;&apos;, &apos;I&apos;, &apos;II&apos;, &apos;III&apos;, &apos;IV&apos;, &apos;V&apos;, &apos;VI&apos;, &apos;VII&apos;, &apos;VIII&apos;, &apos;IX&apos;}; 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(&apos;%4d -&gt; %8s
&apos;, number, intToRoman(number)); } } } 

Ieșire:

Convertiți numere întregi în numere romane în Java

Notă: Programul Java de mai sus funcționează bine până la 3999.

Tipăriți cifre romane într-un interval dat

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(&apos;M&apos;, 1000); romanNumerals.put(&apos;CM&apos;, 900); romanNumerals.put(&apos;D&apos;, 500); romanNumerals.put(&apos;CD&apos;, 400); romanNumerals.put(&apos;C&apos;, 100); romanNumerals.put(&apos;XC&apos;, 90); romanNumerals.put(&apos;L&apos;, 50); romanNumerals.put(&apos;XL&apos;, 40); romanNumerals.put(&apos;X&apos;, 10); romanNumerals.put(&apos;IX&apos;, 9); romanNumerals.put(&apos;V&apos;, 5); romanNumerals.put(&apos;IV&apos;, 4); rssomanNumerals.put(&apos;I&apos;, 1); //variable for string the result String result = &apos;&apos;; //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;>