logo

Muunna kokonaisluvut roomalaisiksi numeroiksi Javassa

Se on ongelma, jota usein kysytään IT-alan huippuyritysten haastatteluissa Google, Amazon, TCS, ja Accenture, jne. Ongelmaa ratkaisemalla halutaan tarkistaa haastateltavan loogista kykyä, kriittistä ajattelua ja ongelmanratkaisukykyä. Joten tässä osiossa aiomme keskustella kuinka muuntaa kokonaisluku roomalaiseksi Javassa eri lähestymistavoilla ja logiikalla. Lisäksi teemme Java-ohjelmia samalle.

Muunna kokonaisluvut roomalaisiksi numeroiksi Javassa

Roomalaiset numerot

Roomalaiset numerot ovat symbolinen esitys numeroista. Näitä käytetään yleensä kellotauluissa, musiikkiteoriassa jne. On olemassa seitsemän kirjaimet, joita käytetään edustamaan roomalaisia ​​numeroita. Seuraava taulukko edustaa roomalaisia ​​numeroita ja vastaavia desimaaliarvoja.

Merkki Roomalainen numero
minä 1
SISÄÄN 5
X 10
L viisikymmentä
C 100
D 500
M 1000

Roomalaisilla numeroilla on seuraavat ominaisuudet:

nick pulos musta salama

Se kirjoitetaan yleensä korkeimmasta pienimpään vasemmalta oikealle, lukuun ottamatta joitakin erikoistapauksia (joissa vasen merkki on pienempi kuin oikea merkki). Esimerkiksi roomalaisilla numeroilla IV vastaa numeroa 4. Sitä ei voi kirjoittaa nimellä IIII.

Tässä tapauksessa vähennämme vasemman merkin arvon oikean merkin arvosta. Esimerkiksi IV on 5-1=4. Samalla tavalla IX on 10-1=9.

Harkitse seuraavia tapauksia:

  • Roomalainen numero I voidaan sijoittaa V:n tai X:n eteen, edustaa vähennystä yksi. Esimerkiksi IV (5-1) = 4 ja 9 on IX (10-1) = 9.
  • Roomalainen numero X voidaan sijoittaa ennen kuin L tai C edustaa vähennyslukua kymmenen. Esimerkiksi XL (50-10) = 40 ja XC (100-10) = 90.
  • Roomalainen numero C, joka on asetettu D:n tai M:n eteen, edustaa sataa. Esimerkiksi CD (500-100) = 400 ja CM (1000-100) = 900.

Lähestyä

Kokonaisluvun muuntaminen roomalaiseksi numeroksi on yksinkertainen tapa. Luo ensin kaksi taulukkoa, joista toinen tallentaa roomalaisten numeroiden arvot ja toinen vastaavien kirjainten tallentamiseen. Luo StringBuilder-luokan esiintymä. Vertaa nyt kokonaislukua roomalaisiin numeroihin ja toimi seuraavasti:

  • Jos syötenumero on >= suurin roomalainen numero, lisää se merkkijonojen muodostajaan ja vähennä sen vastaavaa arvoa syötenumerosta.
  • Jos syöttönumero on

StringBuilder on vastaava roomalainen numero.

Ymmärretään yllä olevat vaiheet esimerkin avulla.

Esimerkki

Oletetaan, että meidän on muutettava 36 roomalaisiksi numeroiksi. Vertaa kokonaislukua roomalaisiin arvoihin seuraavasti.

1000>36 = ​​kyllä, tarkista seuraava roomalainen numero.

900>36 = ​​kyllä, tarkista seuraava roomalainen numero.

500>36 = ​​kyllä, tarkista seuraava roomalainen numero.

400>36 = ​​kyllä, tarkista seuraava roomalainen numero.

100>36 = ​​kyllä, tarkista seuraava roomalainen numero.

90>36 = ​​kyllä, tarkista seuraava roomalainen numero.

50>36 = ​​kyllä, tarkista seuraava roomalainen numero.

40>36 = ​​kyllä, tarkista seuraavalla roomalaisella numerolla.

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, tarkista seuraavalla roomalaisella numerolla, tulos =XXX

9>6, tarkista seuraavalla roomalaisella numerolla, tulos =XXX

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

5>1, tarkista seuraavalla roomalaisella numerolla, tulos =XXXV

mysql käyttäjäluettelo

4>1, tarkista seuraavalla roomalaisella numerolla, tulos =XXXV

1==1, lisää vastaava kirjain 'I' tulokseen, tulos =XXXVI, N = 1-1=0

Tulos = XXXVI

Java-ohjelma, joka muuntaa kokonaislukuja roomalaisiksi numeroiksi

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

Lähtö:

Muunna kokonaisluvut roomalaisiksi numeroiksi Javassa

Toinen tapa tulostaa roomalaisia ​​numeroita on luoda neljä paikkaarvojen ryhmää. Esimerkiksi yksikkö, kymmenet, sata ja tuhat. Sen jälkeen laskee sen paikka-arvon ja muuntaa roomalaisiksi numeroiksi.

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

Lähtö:

Muunna kokonaisluvut roomalaisiksi numeroiksi Javassa

Huomautus: Yllä oleva Java-ohjelma toimii hyvin 3999 asti.

Tulosta roomalainen numero tietyllä alueella

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