C'est un problème fréquemment posé lors des entretiens avec les grandes sociétés informatiques comme Google, Amazon, TCS, et Accenture, etc. En résolvant le problème, on veut vérifier la capacité logique, la pensée critique et la capacité de résolution de problèmes de la personne interrogée. Donc, dans cette section, nous allons discuter comment convertir un entier en romain en Java avec des approches et des logiques différentes. Nous créerons également des programmes Java pour cela.
Chiffres romains
Les chiffres romains sont la représentation symbolique des nombres. Ceux-ci sont généralement utilisés dans les cadrans de montre, la théorie musicale, etc. Sept lettres utilisées pour représenter les chiffres romains. Le tableau suivant représente les chiffres romains et les valeurs décimales correspondantes.
Personnage | Chiffre romain |
---|---|
je | 1 |
DANS | 5 |
X | dix |
L | cinquante |
C | 100 |
D | 500 |
M. | 1000 |
Les chiffres romains ont les propriétés suivantes :
Il s'écrit généralement du plus haut au plus bas, de gauche à droite, sauf cas particuliers (où le caractère de gauche est inférieur au caractère de droite). Par exemple, en chiffres romains, IV équivaut à 4. Il ne peut pas s’écrire IIII.
trier une liste de tableaux en Java
Dans un tel cas, nous soustrayons la valeur du caractère gauche de la valeur du caractère droit. Par exemple, IV sera 5-1=4. De la même manière, IX sera 10-1=9.
Considérons les cas suivants :
- Le chiffre romain I peut être placé avant V ou X, représente la soustraction de un. Par exemple, IV (5-1) = 4 et 9 est IX (10-1) = 9.
- Le chiffre romain X peut être placé avant L ou C représente la soustraction de dix. Par exemple, XL (50-10) = 40 et XC (100-10) = 90.
- Le chiffre romain C placé avant D ou M représente la soustraction de cent. Par exemple, CD (500-100) = 400 et CM (1000-100) = 900.
Approche
Une approche pour convertir un entier en chiffre romain est simple. Tout d’abord, créez deux tableaux, un pour stocker les valeurs des chiffres romains et un second pour stocker les lettres correspondantes. Créez une instance de la classe StringBuilder. Comparez maintenant l'entier avec les chiffres romains et procédez comme suit :
- Si le numéro d'entrée est >= le chiffre romain le plus élevé, ajoutez-le au générateur de chaîne et réduisez sa valeur correspondante du numéro d'entrée.
- Si le numéro saisi est
Le StringBuilder sera le chiffre romain correspondant.
Comprenons les étapes ci-dessus à travers un exemple.
Exemple
Supposons que nous devions convertir 36 en chiffres romains. Comparez l'entier avec les valeurs romaines comme suit.
1000>36 = oui, vérifiez avec le chiffre romain suivant.
900>36 = oui, vérifiez avec le chiffre romain suivant.
500>36 = oui, vérifiez avec le chiffre romain suivant.
400>36 = oui, vérifiez avec le chiffre romain suivant.
100>36 = oui, vérifiez avec le chiffre romain suivant.
conversion d'une chaîne en date
90>36 = oui, vérifiez avec le chiffre romain suivant.
50>36 = oui, vérifiez avec le chiffre romain suivant.
40>36 = oui, vérifiez avec le chiffre romain suivant.
dix<36, add corresponding literal 'x' to result, result='X,' n='36-10=26</p'>
dix<26, add corresponding literal 'x' to result, result='XX,' n='26-10=16</p'>
dix<16, add corresponding literal 'x' to result, result='XXX,' n='16-10=6</p'>
10>6, vérifiez avec le chiffre romain suivant, résultat =XXX
9>6, vérifiez avec le chiffre romain suivant, résultat =XXX
5<6, add corresponding literal 'v' to result, result='XXXV,' n='6-5=1</p'>
5>1, vérifier avec le chiffre romain suivant, résultat =XXXV
4>1, vérifiez avec le chiffre romain suivant, résultat =XXXV
1==1, ajoutez le littéral correspondant 'I' au résultat, résultat =XXXVI, N = 1-1=0
Résultat = XXXVI
Programme Java pour convertir un entier en chiffres romains
EntierVersRoaman.java
quel est le système de fichiers Linux
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); } }
Sortir:
Une autre façon d’imprimer des chiffres romains consiste à créer quatre tableaux de valeurs de position. Par exemple, unité, dizaines, cent et mille. Après cela, calcule sa valeur de position et convertit-la en chiffres romains.
EntierVersRoman.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)); } } }
Sortir:
Remarque : Le programme Java ci-dessus fonctionne correctement jusqu'à 3999.
Imprimer un chiffre romain dans une plage donnée
DécimaltoRoman.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,>36,>