Use the Java Programming Language. YOU MUST USE STACKS! You will be given 2 Roma
ID: 3565076 • Letter: U
Question
Use the Java Programming Language.
YOU MUST USE STACKS!
You will be given 2 Roman Numbers with an operator separating them. The operator will be either a minus, plus, or multiply sign. You need to convert the 2 Roman Numbers to a decimal number, perform the operation and then display the result as a Roman Number. If either Roman numeral is invalid, print an error message to the user.
See example traces here: http://tinyurl.com/exampletraces
When you read the Roman Number as input, you will need to push each item on a STACK as you read it since you don
Explanation / Answer
//Converting Roman number to Arabic number
public static int convertRomToInt(String romanNum)
{
int result = 0;
int mediator = 0;
int length = romanNum.length(); //get number string length
for (int i = 0; i < length - 1; i++) { //this loop will add each Roman character value
if (getInt(romanNum.charAt(i)) > getInt(romanNum.charAt(i + 1))) {
result = result + getInt(romanNum.charAt(i)) + mediator;
mediator = 0;
}
else if (getInt(romanNum.charAt(i)) == getInt(romanNum.charAt(i + 1)))
{
mediator = mediator + getInt(romanNum.charAt(i));
}
else if (getInt(romanNum.charAt(i)) < getInt(romanNum.charAt(i + 1)))
{
mediator = -mediator - getInt(romanNum.charAt(i));
}
}
result = result + mediator + getInt(romanNum.charAt(length - 1));
return result;
}
//Get integer value for corresponding Roman character
public static int getInt(char romanChar) {
if (romanChar == 'I')
return 1;
else if (romanChar == 'V') {
return 5;
} else if (romanChar == 'X') {
return 10;
} else if (romanChar == 'L') {
return 50;
} else if (romanChar == 'C') {
return 100;
} else if (romanChar == 'D') {
return 500;
} else if (romanChar == 'M') {
return 1000;
}
return (Integer) null;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.