Bueno mi pana el problema estaba aqui :
Estas guardando en la variable 'a' el valor de uno de los caracteres de la variable 'str', en el primer caso estas guardando el char '2' y el equivalente en entero para el '2' es el numero 50, eso tiene que ver con los codigos ASCCII.
Luego lo que multiplicaso no es el 2 * 2, si no, 50 * 2, que a mi me daba 100, a ti no se porque te da 101...
La solucion es convertir ese caracter de tipo char a un entero, esto lo hice asi :
Código C++:
Ver originalint a = Integer.parseInt(String.valueOf(str.charAt(i)));
primero convierto el caracter tipo char a un string con la sentencia "String.valueOf(str.charAt(i))", luego convierto el string resultante a entero con la sentencia "Integer.parseInt".
Suerte y Saludos...!!!