Ваша текущая реализация довольно большая и использует много повторяющегося кода. Я бы рекомендовал сжать его и использовать некоторые встроенные системы для преобразования между шестнадцатеричным и целым числами. Примерно так:
public static void main(String[] args) {
String sampleHex = "83ABC";
int val = hexToDecimal(sampleHex);
System.out.println("Value: " + val);
}
private static int hexToDecimal(String value) {
//Store the valid characters for easy referencing
char[] validCharacters = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
//Remove white space and make sure all alphabet characters are upper case
char[] digits = value.strip().toUpperCase().toCharArray();
//Leverage a named loop to move on to the next digit when determined valid
outerLoop:
for(char digit : digits) {
for(char valid : validCharacters) {
if(digit == valid)
continue outerLoop;
}
//The character wasn't in your valid list, so declare an error and return a value of -1
System.out.println("Invalid character given.");
return -1;
}
//Use the built in library tools to convert the value
return Integer.parseInt(value, 16);
}