Facil, simplemente descompones la cadena y si es una letra comparala con ABCDEF, SI es una letra, asignale su respectivo valor y multiplicalo por 16 elevado a la potencia de la posicion donde se encuentre, por ejemplo 2A recorres la cadena de atras para adelante o volteala con el metodo reverse() de la clase StringBuilder, y te quedaria A2
A = 10 X 16 ^ 0 = 10
2 X 16 ^ 1 = 32
ENTONCES 32+10 = 42
AQUI EL CODIGO :
import java.util.Scanner;
public class Hexadecimal {
public static long Hex_Decimal(String n)
{
StringBuilder conversion = new StringBuilder(n).reverse();
long suma=0;
for( int i = 0; i < conversion.length(); i++)
{
if(conversion.charAt(i)=='A')
suma = suma + 10 * (long)Math.pow(16, i);
else if(conversion.charAt(i)=='B')
suma = suma + 11 * (long)Math.pow(16, i);
else if(conversion.charAt(i)=='C')
suma = suma + 12 * (long)Math.pow(16, i);
else if(conversion.charAt(i)=='D')
suma = suma + 13 * (long)Math.pow(16, i);
else if(conversion.charAt(i)=='E')
suma = suma + 14 * (long)Math.pow(16, i);
else if(conversion.charAt(i)=='F')
suma = suma + 15 * (long)Math.pow(16, i);
else
{
suma = suma + Integer. parseInt("" + conversion. charAt(i)) * (long) Math. pow(16, i) ;
}
}
return suma;
}
public static void main(String[]args)
{
Scanner lee = new Scanner(System.in);
System.out.println("Ingresa un numero hexadecimal");
String numero = lee.nextLine().toUpperCase();
System.out.println( Hexadecimal. Hex_Decimal(numero) ) ;
}
}