logo

Java'da Tam Sayıyı Romen Rakamlarına Dönüştürme

Bu, önde gelen BT şirketlerinin röportajlarında sıklıkla sorulan bir sorundur. Google, Amazon, TCS, Ve Accenture, vb. Sorunu çözerek, görüşülen kişinin mantıksal yeteneğini, eleştirel düşünmesini ve problem çözme becerisini kontrol etmek istenir. Bu nedenle, bu bölümde bunu tartışacağız. Java'da tamsayıyı romana nasıl dönüştürebilirim? farklı yaklaşım ve mantıkla. Ayrıca bunun için Java programları oluşturacağız.

Java'da Tam Sayıyı Romen Rakamlarına Dönüştürme

Roma rakamları

Romen rakamları sayıların sembolik temsilidir. Bunlar genellikle saat kadranlarında, müzik teorisinde vb. kullanılır. Yedi Roma rakamlarını temsil etmek için kullanılan harfler. Aşağıdaki tablo romen rakamlarını ve karşılık gelen ondalık değerleri temsil etmektedir.

ml'den oz'a
Karakter Roma rakamı
BEN 1
İÇİNDE 5
X 10
L elli
C 100
D 500
M 1000

Romen rakamları aşağıdaki özelliklere sahiptir:

Bazı özel durumlar (soldaki karakterin sağdaki karakterden küçük olduğu durumlar) dışında, genellikle soldan sağa en yüksekten en düşüğe doğru yazılır. Örneğin Roma rakamlarında IV, 4'e eşdeğerdir. IIII şeklinde yazılamaz.

Böyle bir durumda sol karakter değerini sağ karakter değerinden çıkarıyoruz. Örneğin IV, 5-1=4 olacaktır. Aynı şekilde IX da 10-1=9 olacaktır.

Aşağıdaki durumları göz önünde bulundurun:

  • V veya X'in önüne yerleştirilebilen Roma rakamı I, bir çıkarmayı temsil eder. Örneğin IV (5-1) = 4 ve 9, IX (10-1) = 9'dur.
  • Roma rakamı X, L'den önce yerleştirilebilir veya C, on çıkarmayı temsil eder. Örneğin XL (50-10) = 40 ve XC (100-10) = 90.
  • D veya M'den önce gelen Roma rakamı C, yüz çıkarmayı temsil eder. Örneğin CD (500-100) = 400 ve CM (1000-100) = 900.

Yaklaşmak

Tamsayıyı romen rakamına dönüştürme yaklaşımı basittir. İlk olarak, biri romen rakamlarının değerlerini depolamak için, ikincisi karşılık gelen harfleri depolamak için iki dizi oluşturun. StringBuilder Sınıfının bir örneğini oluşturun. Şimdi tamsayıyı Roma rakamlarıyla karşılaştırın ve aşağıdakileri yapın:

  • Giriş numarası >= en yüksek Roma rakamı ise, bunu dize oluşturucuya ekleyin ve karşılık gelen değeri giriş numarasından azaltın.
  • Giriş numarası ise

StringBuilder karşılık gelen Roma rakamı olacaktır.

Yukarıdaki adımları bir örnek üzerinden anlayalım.

MySQL kullanıcı listesi

Örnek

Diyelim ki 36'yı Romen rakamlarına çevirmemiz gerekiyor. Tamsayıyı roma değerleriyle aşağıdaki gibi karşılaştırın.

1000>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

900>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

500>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

400>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

100>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

90>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

50>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

40>36 = ​​evet, sonraki romen rakamıyla kontrol edin.

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, sonraki romen rakamıyla kontrol edin, sonuç =XXX

9>6, sonraki romen rakamıyla kontrol edin, sonuç =XXX

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

5>1, sonraki romen rakamıyla kontrol edin, sonuç =XXXV

4>1, sonraki romen rakamıyla kontrol edin, sonuç =XXXV

1==1, sonuca karşılık gelen değişmez 'I'yi ekleyin, sonuç =XXXVI, N = 1-1=0

gizli uygulamalar nasıl ortaya çıkarılır

Sonuç = XXXVI

Tam Sayıyı Romen Rakamlarına Dönüştüren Java Programı

IntegerToRoaman.java

üçüncü normal form
 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); } } 

Çıktı:

Java'da Tam Sayıyı Romen Rakamlarına Dönüştürme

Roma rakamını yazdırmanın başka bir yolu da dört basamak değeri dizisi oluşturmaktır. Örneğin birim, onlar, yüz ve bin. Daha sonra basamak değerini hesaplar ve Romen rakamlarına dönüştürür.

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

Çıktı:

Java'da Tam Sayıyı Romen Rakamlarına Dönüştürme

Not: Yukarıdaki Java programı 3999'a kadar sorunsuz çalışır.

Belirli Bir Aralıktaki Roma Rakamını Yazdır

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