title: Roman Numeral to Number Conversion
body: <p>Trying to write program to read in a string of characters that represent a Roman numeral (from user input) and then convert it to Arabic form (an integer). For instance, I = 1, V = 5, X = 10 etc.</p>
  
  <p>Basically, the constructor that takes a parameter of type String must interpret the string (from user input) as a Roman numeral and convert it to the corresponding int value.</p>
  
  <p>Is there an easier way to solve this besides the below in progress (which isn't compiling as yet):</p>
  
  <pre><code>import java.util.Scanner;
  
  public class RomInt {
  String roman;
  int val;
  void assign(String k)
  {
    roman=k;
  }
  
  private class Literal
  {
      public char literal;
      public int value;
  
      public Literal(char literal, int value)
      {
          this.literal = literal;
          this.value = value;
      }
  }
  
  private final Literal[] ROMAN_LITERALS = new Literal[]
          {
                  new Literal('I', 1),
                  new Literal('V', 5),
                  new Literal('X', 10),
                  new Literal('L', 50),
                  new Literal('C', 100),
                  new Literal('D', 500),
                  new Literal('M', 1000)
          };
  
  public int getVal(String s) {
  
     int holdValue=0;
  
          for (int j = 0; j &lt; ROMAN_LITERALS.length; j++)
          {
              if (s.charAt(0)==ROMAN_LITERALS[j].literal)
              {
                         holdValue=ROMAN_LITERALS[j].value;
                             break;
              }  //if()
          }//for()
  
    return holdValue;
  }  //getVal()
  public int count()
  {
     int count=0;
     int countA=0;
     int countB=0;
     int lastPosition = 0;
      for(int i = 0 ; i &lt; roman.length(); i++)
      {
        String s1 = roman.substring(i,i+1);
          int a=getVal(s1);
          countA+=a;
      }
      for(int j=1;j&lt;roman.length();j++)
      {
          String s2=  roman.substring(j,j+1);
          String s3=  roman.substring(j-1,j);
          int b=getVal(s2);
          int c=getVal(s3);
          if(b&gt;c)
          {
              countB+=c;
          }
      }
      count=countA-(2*countB);
      return count;
      }
  
  
  void disp()
  {
  
       int result=count();
      System.out.println("Integer equivalent of "+roman+" = " +result);
  }
  
  
    public static void main(String[] args)
  {
  Scanner keyboard = new Scanner(System.in);
  System.out.print("Please enter Roman Symbol:");
  String s = keyboard.nextLine();
  RomInt();
  
  }
  
  }  
  </code></pre>