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.