logo

تحويل عدد صحيح إلى أرقام رومانية في جافا

إنها مشكلة يتم طرحها بشكل متكرر في المقابلات مع أفضل شركات تكنولوجيا المعلومات مثل جوجل، أمازون، تي سي إس، و أكسنتشر, وما إلى ذلك. ومن خلال حل المشكلة، يريد المرء التحقق من القدرة المنطقية والتفكير النقدي ومهارة حل المشكلات لدى الشخص الذي تتم مقابلته. لذلك، في هذا القسم، سنناقش كيفية تحويل عدد صحيح إلى الروماني في جاوة مع اختلاف النهج والمنطق. وسنقوم أيضًا بإنشاء برامج Java لنفس الغرض.

تحويل عدد صحيح إلى أرقام رومانية في جافا

الأرقام الرومانية

الأرقام الرومانية هي التمثيل الرمزي للأرقام. تُستخدم هذه عادةً في وجوه الساعة ونظرية الموسيقى وما إلى ذلك سبعة الحروف المستخدمة لتمثيل الأرقام الرومانية. يمثل الجدول التالي الأرقام الرومانية والقيم العشرية المقابلة لها.

شخصية رقم روماني
أنا 1
في 5
X 10
ل خمسون
ج 100
د 500
م 1000

تتميز الأرقام الرومانية بالخصائص التالية:

أنواع الشبكات

عادة ما يتم كتابته من الأعلى إلى الأسفل من اليسار إلى اليمين، باستثناء بعض الحالات الخاصة (حيث يكون الحرف الأيسر أقل من الحرف الأيمن). على سبيل المثال، في الأرقام الرومانية IV يعادل 4. ولا يمكن كتابته كـ IIII.

في مثل هذه الحالة، نقوم بطرح قيمة الحرف الأيسر من قيمة الحرف الأيمن. على سبيل المثال، IV سيكون 5-1=4. بنفس الطريقة سيكون IX 10-1=9.

النظر في الحالات التالية:

  • الرقم الروماني I الذي يمكن وضعه قبل V أو X يمثل طرح واحد. على سبيل المثال، IV (5-1) = 4 و9 هو IX (10-1) = 9.
  • يمكن وضع الرقم الروماني X قبل L أو C الذي يمثل طرح عشرة. على سبيل المثال، XL (50-10) = 40 وXC (100-10) = 90.
  • الرقم الروماني C الموجود قبل D أو M يمثل طرح مائة. على سبيل المثال، CD (500-100) = 400 وCM (1000-100) = 900.

يقترب

طريقة تحويل عدد صحيح إلى أرقام رومانية بسيطة. أولاً، قم بإنشاء مصفوفتين واحدة لتخزين قيم الأرقام الرومانية والثانية لتخزين الحروف المقابلة. قم بإنشاء مثيل لفئة StringBuilder. الآن قارن العدد الصحيح بالأرقام الرومانية وقم بما يلي:

  • إذا كان رقم الإدخال >= أعلى رقم روماني، فأضفه إلى منشئ السلسلة وقم بتقليل قيمته المقابلة من رقم الإدخال.
  • إذا كان رقم الإدخال هو

سيكون StringBuilder هو الرقم الروماني المقابل.

دعونا نفهم الخطوات المذكورة أعلاه من خلال مثال.

مثال

لنفترض أنه يتعين علينا تحويل 36 إلى أرقام رومانية. قارن العدد الصحيح بالقيم الرومانية كما يلي.

1000>36 = ​​نعم، تحقق من الرقم الروماني التالي.

900>36 = ​​نعم، تحقق من الرقم الروماني التالي.

500>36 = ​​نعم، تحقق من الرقم الروماني التالي.

400>36 = ​​نعم، تحقق من الرقم الروماني التالي.

100>36 = ​​نعم، تحقق من الرقم الروماني التالي.

90>36 = ​​نعم، تحقق من الرقم الروماني التالي.

50>36 = ​​نعم، تحقق من الرقم الروماني التالي.

40>36 = ​​نعم، تحقق من الرقم الروماني التالي.

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، تحقق من الرقم الروماني التالي، النتيجة =XXX

9>6، تحقق من الرقم الروماني التالي، النتيجة =XXX

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

5>1، تحقق من الرقم الروماني التالي، النتيجة = XXXV

يساوي CPP

4>1، تحقق من الرقم الروماني التالي، النتيجة = XXXV

1==1، أضف الحرف 'I' المقابل للنتيجة، النتيجة =XXXVI، N = 1-1=0

النتيجة = السادس والثلاثون

برنامج جافا لتحويل الأعداد الصحيحة إلى الأرقام الرومانية

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

انتاج:

تحويل عدد صحيح إلى أرقام رومانية في جافا

هناك طريقة أخرى لطباعة الأرقام الرومانية وهي إنشاء أربع صفائف من القيم المكانية. على سبيل المثال، الوحدة والعشرات والمائة والألف. بعد ذلك، يتم حساب القيمة المكانية لها وتحويلها إلى أرقام رومانية.

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

انتاج:

تحويل عدد صحيح إلى أرقام رومانية في جافا

ملحوظة: برنامج Java أعلاه يعمل بشكل جيد حتى 3999.

طباعة الأرقام الرومانية في نطاق معين

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