All pastes #966436 Raw Edit

lili

public text v1 · immutable
·published 2008-04-01 19:05 UTC
rendered paste body
import java.io.*;
import java.util.StringTokenizer;
import java.lang.Integer;

class test1{

    public static void main(String[] args) throws IOException{
          String roman="";
          BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

            System.out.print("\nEnter the roman numeral: ");
            try {
               roman = br.readLine();
            }catch (IOException ioe) {
               System.out.println("Error reading the roman numeral");
               System.exit(1);
            }

                try {
                    System.out.println(deromanize(roman));
                }
                catch (NumberFormatException e) {
                    System.out.println("Invalid input.");
                    System.exit(1);
                }

       System.out.println("\n\nGG");

    }
       // deromanize(string)
       // takes a roman numeral returns a number
       public static int deromanize(String roman) {

          if (roman.length() == 0)
             throw new NumberFormatException("An empty string is not quite a Roman numeral.");

          roman = roman.toUpperCase();

          int i=0, arabic=0, num=0;

          while (i < roman.length()) {

             char letter = roman.charAt(i);
             int number = numberizer(letter);

             if (number < 0)
                throw new NumberFormatException("Illegal character \"" + letter + "\" in roman numeral.");

             i++;

             if (i == roman.length()) {
                arabic += number;
             }
             else {
                int nextNumber = numberizer(roman.charAt(i));
                if (nextNumber > number) {
                   arabic += (nextNumber - number);
                   i++;
                }
                else {
                   arabic += number;
                }
             }

          }

          if (arabic > 3999)
             throw new NumberFormatException("Numeral must be less than or equal to 3999...sorry.");

          num = arabic;
          return num;

       } // end of deromanize

       public static int numberizer(char letter) {
             // Find the integer value of letter considered as a Roman numeral.  Return
             // -1 if letter is not a legal Roman numeral.  The letter must be upper case.
          switch (letter) {
             case 'I':  return 1;
             case 'V':  return 5;
             case 'X':  return 10;
             case 'L':  return 50;
             case 'C':  return 100;
             case 'D':  return 500;
             case 'M':  return 1000;
             default:   return -1;
          }
       }//end of numberizer
    }