Created
February 12, 2022 07:12
-
-
Save aadipoddar/e5073b35675cdc1cc6eb5008c83a7a32 to your computer and use it in GitHub Desktop.
Convert Roman to Integer and Vice Versa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Write a program to accept a number whuch is less than 50 and convert it into ROMAN form and vice versa. | |
Eg: | |
INPUT: 34 | |
OUTPUT: XXXIV | |
INPUT: 50 | |
OUTPUT: Out of range | |
INPUT: XXXVI | |
OUTPUT: 36 | |
*/ | |
import java.util.Scanner; | |
class RomanConvertor { | |
private boolean isRoman(String input) { | |
String wordArray[] = new String[input.length()]; | |
for (int i = 0; i < input.length(); i++) | |
wordArray[i] = input.substring(i, i + 1); | |
for (int i = 0; i < wordArray.length; i++) { | |
if (wordArray[i].equals("I") || wordArray[i].equals("V") || wordArray[i].equals("X")) | |
continue; | |
else | |
return false; | |
} | |
return true; | |
} | |
private int convertToNumber(String str) { | |
int number = 0; | |
int i = 0; | |
while (i < str.length()) { | |
if (str.charAt(i) == 'I') { | |
if (i + 1 < str.length() && str.charAt(i + 1) == 'V') { | |
number += 4; | |
i += 2; | |
} else if (i + 1 < str.length() && str.charAt(i + 1) == 'X') { | |
number += 9; | |
i += 2; | |
} else { | |
number += 1; | |
i++; | |
} | |
} | |
else if (str.charAt(i) == 'V') { | |
number += 5; | |
i++; | |
} | |
else if (str.charAt(i) == 'X') { | |
number += 10; | |
i++; | |
} | |
else | |
continue; | |
} | |
return number; | |
} | |
private String convertToRoman(int number) { | |
String roman = ""; | |
while (number >= 10) { | |
roman += "X"; | |
number -= 10; | |
} | |
if (number == 9) { | |
roman += "IX"; | |
number -= 9; | |
} | |
while (number >= 5) { | |
roman += "V"; | |
number -= 5; | |
} | |
if (number == 4) { | |
roman += "IV"; | |
number -= 4; | |
} | |
while (number >= 1 && number < 4) { | |
roman += "I"; | |
number -= 1; | |
} | |
return roman; | |
} | |
public static void main(String[] args) { | |
Scanner sc = new Scanner(System.in); | |
System.out.println("Enter the Number or Roman form"); | |
String str = sc.nextLine(); | |
str = str.toUpperCase(); | |
RomanConvertor obj = new RomanConvertor(); | |
if (obj.isRoman(str)) | |
System.out.println(obj.convertToNumber(str)); | |
else { | |
int number = Integer.parseInt(str); | |
if (number >= 50 || number < 1) | |
System.out.println("Out of range"); | |
else | |
System.out.println(obj.convertToRoman(number)); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment