Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class roman_calculator {
- Scanner scan = new Scanner(System.in);
- boolean doCalculation()
- {
- char operator;
- int operand1, operand2, answer;
- operator = getOperator();
- if (operator == 'q')
- return false;
- do {
- operand1 = getOperand(1);
- } while (operand1 == -1);
- do {
- operand2 = getOperand(2);
- } while (operand2 == -1);
- //System.out.println(operand1 + operator + operand2);
- answer = doArtithmetic(operand1, operand2, operator);
- System.out.print("Answer= " + convert_to_Roman(answer, operator));
- return true;
- }
- char getOperator()
- {
- char operator = 'q';
- //user operator
- boolean operator_is_good=false;
- do {
- System.out.print("Enter an Operator: + - * / q for quit: ");
- String strOperator = scan.nextLine();
- strOperator = strOperator.trim();
- if (strOperator.length() == 0)
- continue;
- operator = strOperator.charAt(0);
- operator_is_good=false;
- switch (operator) {
- case 'q':
- case '+':
- case '-':
- case '*':
- case '/':
- operator_is_good = true;
- break;
- default:
- System.out.println("Your operator is bad ... try again:");
- break;
- }
- } while (!operator_is_good);
- return operator;
- }
- // This routine prompts the user for either operand1 or operand2
- // depending on the value of which. This routine uppercases the
- // input and calls convert_from_Roman to create an integer.
- // If the input is invalid ( negative return from convert_from_Roman)
- // then complain and prompt the user again.
- int getOperand(int which)
- {
- System.out.print("Enter Operand "+which + ":");
- String input;
- input = scan.nextLine();
- input = input.toUpperCase();
- int value = convert_from_Roman(input);
- return value;
- }
- // Routine to convert an integer to a Roman Numeral String.
- // When you do this routine, you might find it handy to
- // create a utility routine that looks like:
- // String addRomanDigit(String starting, int num, char digit)
- String convert_to_Roman(int value, char operator)
- {
- String roman ="";
- while (value != 0) {
- if (value >= 1000) {
- roman = roman + 'M';
- value = value - 1000;
- }
- else if (value >= 500) {
- roman = roman + 'D';
- value = value - 500;
- }
- else if (value >= 100) {
- roman = roman + 'C';
- value = value - 100;
- }
- else if (value >= 50) {
- roman = roman + 'L';
- value = value - 50;
- }
- else if (value >= 10) {
- roman = roman + 'X';
- value = value - 10;
- }
- else if (value >=5) {
- roman = roman + 'V';
- value = value - 5;
- }
- else if (value >= 1) {
- roman = roman + 'I';
- value = value - 1;
- }
- }
- return roman;
- }
- // Convert Roman Numeral String to an integer. If the
- // Roman Numeral String is invalid, return -1
- int convert_from_Roman(String value)
- {
- int numValue = 0;
- value = value.trim(); //value = IV
- int len = value.length(); //len = 2
- for (int i=0; i<len; i++)
- {
- char location = value.charAt(i);
- //System.out.println(value.charAt(i));
- if (location == 'I')
- numValue = numValue + 1;
- else if (location == 'V')
- numValue = numValue + 5;
- else if (location == 'X')
- numValue = numValue + 10;
- else if (location == 'L')
- numValue = numValue + 50;
- else if (location == 'C')
- numValue = numValue + 100;
- else if (location == 'D')
- numValue = numValue + 500;
- else if (location == 'M')
- numValue = numValue + 1000;
- else {
- numValue = -1;
- System.out.println(value + " has a bad character at position: " + i);
- return numValue;
- }
- }
- //System.out.println(numValue);
- return numValue;
- }
- int doArtithmetic(int operand1, int operand2, char operator)
- {
- int answer = 0;
- //logic to compute answer
- switch (operator) {
- case '+':
- answer = operand1 + operand2;
- break;
- case '-':
- answer = operand1 - operand2;
- break;
- case '/':
- answer = operand1 / operand2;
- break;
- case '*':
- answer = operand1 * operand2;
- break;
- }
- return answer;
- }
- public static void main(String[] args) {
- roman_calculator rc = new roman_calculator();
- while (rc.doCalculation())
- {
- System.out.println();
- }
- System.out.println("Finished Roman Computations");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement