Here's file named "Algorithm.java"
package leetcode;
import java.util.HashMap;
import java.util.Map;
public class Algorithms {
    public static int romanToInteger(String roman) {
        Map<String, Integer> romanValues = new HashMap<>();
        romanValues.put("I", 1);
        romanValues.put("V", 5);
        romanValues.put("X", 10);
        romanValues.put("L", 50);
        romanValues.put("C", 100);
        romanValues.put("D", 500);
        romanValues.put("M", 1000);
        int integer = romanValues.get(Character.toString(roman.charAt(roman.length() - 1)));
        int previousValue = integer, current;
        for (int i = roman.length() - 2; i >= 0; i--) {
            current = romanValues.get(Character.toString(roman.charAt(i)));
            if (current < previousValue) {
                integer -= current;
            } else {
                integer += current;
            }
            previousValue = current;
        }
        return integer;
    }
}
and here's "Main.java" from where I am calling the code
package leetcode;
public class Main {
    public static void main(String[] args) {
        System.out.println(Algorithms.romanToInteger("XII"));
    }
}
I am new to Java and I don't understand why this line is causing a NullPointerException.
int integer = romanValues.get(roman.charAt(roman.length() - 1));
But when I convert romanValues.get() argument to String like this
int integer = romanValues.get(Character.toString(roman.charAt(roman.length() - 1)));
it runs fine.
 
     
    