
program to calculate roman numbers .....i.e roman number calculator
import java.util.*;
import java.io.*;
class romancalci {
public static void main(String args[])throws IOException {
int decimal1 = 0;int decimal2=0;
Scanner input=new Scanner(System.in);
System.out.print("Enter a Roman Number 1st: ");
String roman1 = input.next();
System.out.println("Enter a Roman Number 2nd: ");
String roman2=input.next();
String romanNumeral1 = roman1.toUpperCase();
String romanNumeral2=roman2.toUpperCase();
int x = 0;int result=0;int largest=0;int number=0;
int l1=romanNumeral1.length();
int l2=romanNumeral2.length();
String numeral1=romanNumeral1;
String numeral2=romanNumeral2;
String s="IC";
String s3="IVC";
String newNumeral = numeral1.replace("XL", "XXXX"); // Replaces XL with XXXX
String newNumeral2 = newNumeral.replace("XC", "LXXXX"); // Replaces XC with LXXXX
String newNumeral3 = newNumeral2.replace("CD", "CCCC"); // Replaces CD with CCCC
String newNumeral4 = newNumeral3.replace("CM", "DCCCC"); // Replaces CM with DCCC
String newNumeral5 = newNumeral4.replace("IV", "IIII"); // Replaces IV with IIII
String newNumeral6 = newNumeral5.replace("IX", "VIIII");
l1=newNumeral6.length();
String newNumeralz = numeral2.replace("XL", "XXXX"); // Replaces XL with XXXX
String newNumeralz2 = newNumeralz.replace("XC", "LXXXX"); // Replaces XC with LXXXX
String newNumeralz3 = newNumeralz2.replace("CD", "CCCC"); // Replaces CD with CCCC
String newNumeralz4 = newNumeralz3.replace("CM", "DCCCC"); // Replaces CM with DCCC
String newNumeralz5 = newNumeralz4.replace("IV", "IIII"); // Replaces IV with IIII
String newNumeralz6 = newNumeralz5.replace("IX", "VIIII");
l2=newNumeralz6.length();
if(newNumeral6.equals(s)) { System.out.println("enter the correct roman value 1 in place of IC"); newNumeral6="0"; }
do { char convert1 = newNumeral6.charAt(x); switch (convert1) { case 'M': decimal1 += 1000; break;
case 'D':
decimal1 += 500;
break;
case 'C':
decimal1 += 100;
break;
case 'L':
decimal1 += 50;
break;
case 'X':
decimal1 += 10;
break;
case 'V':
decimal1 += 5;
break;
case 'I':
decimal1 += 1;
break;
}
x++;
} while (x < l1);
System.out.println("Decimal Number1 is: " + decimal1);
x=0;
if(newNumeralz6.equals("ic"))
{ System.out.println("enter the correct roman value 2 in place of IC"); newNumeralz6="0"; }
do { char convert2 = newNumeralz6.charAt(x); switch (convert2) { case 'M': decimal2 += 1000; break;
case 'D':
decimal2 += 500;
break;
case 'C':
decimal2 += 100;
break;
case 'L':
decimal2 += 50;
break;
case 'X':
decimal2 += 10;
break;
case 'V':
decimal2 += 5;
break;
case 'I':
decimal2 += 1;
break;
}
x++;
} while (x < l2);
System.out.println("Decimal Number2 is: " + decimal2);
System.out.println("enter the choice for calculating \n 1 for addition \n 2 for subtraction \n 3 for multiplication");
int choice=input.nextInt();
switch(choice)
{ case 1: result=decimal1+decimal2; System.out.println("the calculated result in integer is= "+ result); break; case 2: result=decimal1-decimal2; System.out.println("the calculated result in integer is= "+ result); break; case 3: result=decimal1*decimal2; System.out.println("the calculated result in integer is= "+ result); break; default: System.out.println("enter the correct choice"); }
number=result;
String roman="";
while(number>=1000){
roman += "M";
number-=1000;
}
while(number>=900){
roman += "CM";
number-=900;
}
while(number>=500){
roman += "D";
number-=500;
}
while(number>=400){
roman += "CD";
number-=400;
}
while(number>=100){
roman += "C";
number-=100;
}
while(number>=90){
roman += "XC";
number-=90;
}
while(number>=50){
roman += "L";
number-=50;
}
while(number>=40){
roman += "XL";
number-=40;
}
while(number>=10){
roman += "X";
number-=10;
}
while(number>=9){
roman += "IX";
number-=9;
}
while(number>=5){
roman += "V";
number-=5;
}
while(number>=4){
roman += "IV";
number-=4;
}
while(number>=1){
roman += "I";
number-=1;
}
System.out.println("the final result in roman ="+ roman);
}
}