logo

Previesť celé číslo na rímske číslice v jazyku Java

Je to problém často kladený v rozhovoroch špičkových IT spoločností ako napr Google, Amazon, TCS, a Accenture, atď. Riešením problému chceme overiť logické schopnosti, kritické myslenie a schopnosť riešiť problémy respondenta. Takže v tejto časti budeme diskutovať ako previesť celé číslo na rímsku v jazyku Java s rôznymi prístupmi a logikou. Tiež pre to vytvoríme Java programy.

Previesť celé číslo na rímske číslice v jazyku Java

Rímske číslice

Rímske číslice sú symbolickým znázornením čísel. Zvyčajne sa používajú v ciferníkoch, hudobnej teórii atď sedem písmená používané na označenie rímskych číslic. Nasledujúca tabuľka predstavuje rímske číslice a zodpovedajúce desatinné hodnoty.

Charakter Rímska číslica
ja 1
V 5
X 10
L päťdesiat
C 100
D 500
M 1000

Rímske číslice majú tieto vlastnosti:

Zvyčajne sa píše od najvyššej po najnižšiu zľava doprava, s výnimkou niektorých špeciálnych prípadov (kde je ľavý znak menší ako pravý). Napríklad v rímskych čísliciach sa IV rovná 4. Nemožno ho písať ako IIII.

V takom prípade odpočítame hodnotu odčítania ľavého znaku od hodnoty pravého znaku. Napríklad IV bude 5-1=4. Rovnakým spôsobom IX bude 10-1=9.

Zvážte nasledujúce prípady:

  • Rímska číslica I môže byť umiestnená pred V alebo X, predstavuje odčítanie jedna. Napríklad IV (5-1) = 4 a 9 je IX (10-1) = 9.
  • Rímska číslica X môže byť umiestnená pred L alebo C predstavuje odčítanie desať. Napríklad XL (50-10) = 40 a XC (100-10) = 90.
  • Rímska číslica C umiestnená pred D alebo M predstavuje odčítanie sto. Napríklad CD (500 – 100) = 400 a CM (1 000 – 100) = 900.

Prístup

Postup prevodu celého čísla na rímske číslo je jednoduchý. Najprv vytvorte dve polia, jedno na ukladanie hodnôt rímskych číslic a druhé na ukladanie zodpovedajúcich písmen. Vytvorte inštanciu triedy StringBuilder. Teraz porovnajte celé číslo s rímskymi číslicami a urobte nasledovné:

  • Ak je vstupné číslo >= najvyššie rímske číslo, pridajte ho do tvorcu reťazcov a znížte jeho zodpovedajúcu hodnotu zo vstupného čísla.
  • Ak je vstupné číslo

StringBuilder bude zodpovedajúca rímska číslica.

java int v reťazci

Poďme pochopiť vyššie uvedené kroky prostredníctvom príkladu.

Príklad

Predpokladajme, že musíme previesť 36 na rímske číslice. Porovnajte celé číslo s rímskymi hodnotami nasledovne.

1000>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

900>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

500>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

400>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

100>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

java počítadlo

90>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

50>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

40>36 = ​​áno, skontrolujte nasledujúcou rímskou číslicou.

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, skontrolujte s nasledujúcou rímskou číslicou, výsledok = XXX

9>6, skontrolujte s nasledujúcou rímskou číslicou, výsledok = XXX

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

5>1, skontrolujte nasledujúcou rímskou číslicou, výsledok = XXXV

4>1, skontrolujte nasledujúcou rímskou číslicou, výsledok = XXXV

algoritmus triedenia vloženia

1==1, k výsledku pridajte zodpovedajúce doslovné „I“, výsledok =XXXVI, N = 1-1=0

Výsledok = XXXVI

Java program na prevod celých čísel na rímske číslice

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

Výkon:

Previesť celé číslo na rímske číslice v jazyku Java

Ďalším spôsobom tlače rímskych číslic je vytvorenie štyroch polí hodnôt miesta. Napríklad jednotka, desiatky, sto a tisíc. Potom vypočíta jeho hodnotu miesta a prevedie ho na rímske číslice.

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

Výkon:

Previesť celé číslo na rímske číslice v jazyku Java

Poznámka: Vyššie uvedený program Java funguje dobre až do 3999.

Tlač rímskych číslic v danom rozsahu

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