logo

Egész számok átalakítása római számokká Java nyelven

Ez egy olyan probléma, amelyet gyakran feltesznek olyan vezető IT-cégek interjúiban, mint pl Google, Amazon, TCS, és Accenture, stb. A probléma megoldásával az interjúalany logikai képességét, kritikai gondolkodását, problémamegoldó képességét kívánjuk ellenőrizni. Ebben a részben tehát megvitatjuk hogyan lehet egész számot rómaira konvertálni Java nyelven különböző megközelítésekkel és logikával. Ehhez Java programokat is készítünk.

gb vs mb
Egész számok átalakítása római számokká Java nyelven

Római számok

A római számok a számok szimbolikus ábrázolása. Ezeket általában óralapokban, zeneelméletben stb. használják. Vannak hét a római számok jelölésére használt betűk. A következő táblázat a római számokat és a megfelelő decimális értékeket mutatja.

karakter Római szám
én 1
BAN BEN 5
x 10
L ötven
C 100
D 500
M 1000

A római számok a következő tulajdonságokkal rendelkeznek:

Általában a legmagasabbtól a legalacsonyabbig írják balról jobbra, kivéve néhány speciális esetet (ahol a bal karakter kisebb, mint a jobb karakter). Például római számokkal a IV egyenértékű a 4-gyel. Nem írható IIII-nak.

Ebben az esetben a jobb oldali karakter értékéből kivonjuk a bal karakter értékét. Például IV 5-1=4 lesz. Ugyanígy IX lesz 10-1=9.

Vegye figyelembe a következő eseteket:

  • Az I római szám V vagy X elé helyezhető, az egyet jelenti. Például IV (5-1) = 4 és 9 jelentése IX (10-1) = 9.
  • Az X római szám az L vagy C elé helyezhető, amely a tíz kivonását jelenti. Például XL (50-10) = 40 és XC (100-10) = 90.
  • A D vagy M elé helyezett C római szám a száz kivonását jelenti. Például CD (500-100) = 400 és CM (1000-100) = 900.

Megközelítés

Az egész szám római számmá alakításának módja egyszerű. Először hozzon létre két tömböt, az egyiket a római számok értékeinek, a második pedig a megfelelő betűk tárolására. Hozzon létre egy példányt a StringBuilder osztályból. Hasonlítsa össze az egész számot római számokkal, és tegye a következőket:

  • Ha a bemeneti szám >= a legnagyobb római szám, adja hozzá a karakterlánc-építőhöz, és csökkentse a megfelelő értékét a bemeneti számból.
  • Ha a bemeneti szám

A StringBuilder a megfelelő római szám lesz.

Nézzük meg a fenti lépéseket egy példán keresztül.

tanulj szelént

Példa

Tegyük fel, hogy a 36-ot római számokra kell konvertálnunk. Hasonlítsa össze az egész számot a római értékekkel az alábbiak szerint.

1000>36 = ​​igen, ellenőrizze a következő római számmal.

900>36 = ​​igen, ellenőrizze a következő római számmal.

500>36 = ​​igen, ellenőrizze a következő római számmal.

400>36 = ​​igen, ellenőrizze a következő római számmal.

100>36 = ​​igen, ellenőrizze a következő római számmal.

90>36 = ​​igen, ellenőrizze a következő római számmal.

gyűjtemények java

50>36 = ​​igen, ellenőrizze a következő római számmal.

40>36 = ​​igen, ellenőrizze a következő római számmal.

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, ellenőrizze a következő római számmal, eredmény =XXX

9>6, ellenőrizze a következő római számmal, eredmény =XXX

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

5>1, ellenőrizze a következő római számmal, eredmény =XXXV

4>1, ellenőrizze a következő római számmal, eredmény =XXXV

1==1, a megfelelő „I” literál hozzáadása az eredményhez, eredmény =XXXVI, N = 1-1=0

Eredmény = XXXVI

Java program egész számok római számokká konvertálására

IntegerToRoaman.java

 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); } } 

Kimenet:

Egész számok átalakítása római számokká Java nyelven

A római számok nyomtatásának másik módja négy helyiérték-tömb létrehozása. Például egység, tíz, száz és ezer. Ezt követően kiszámítja a helyi értékét, és átváltja római számokra.

java concat karakterlánc

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)); } } } 

Kimenet:

Egész számok átalakítása római számokká Java nyelven

Megjegyzés: A fenti Java program 3999-ig jól működik.

Nyomtasson római számokat adott tartományban

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

csillag topológia