в первом методе и вовсе не понятно почему не проходит валидацию, а во втором же случае если в параметры которые передаются в метод попадет буква p или любая другая не входящая в комбинацию хекс кодировки, метод все равно работает, как этого избежать подскажите пожалуйста.
package com.javarush.task.pro.task09.task0907;
import java.awt.*;
import java.util.regex.Pattern;
/*
Шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
public static void main(String[] args) {
int decimalNumber =1256;
System.out.println("Десятичное число " + decimalNumber + " равно шестнадцатеричному числу " + toHex(decimalNumber));
String hexNumber = "4e8";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно десятичному числу " + toDecimal(hexNumber));
}
public static String toHex(int decimalNumber) {
if (decimalNumber <= 0){
return "";
}
StringBuilder solutionIsHere = new StringBuilder("");
int remainder = 0;
do {
remainder = decimalNumber % 16;
decimalNumber = decimalNumber / 16;
for (int i = 0; i < HEX.length(); i++) {
if (remainder == i) {
solutionIsHere.append(HEX.charAt(i));
}
}
}
while ((remainder != 0));
solutionIsHere.reverse();
solutionIsHere.deleteCharAt(0);
return solutionIsHere.toString();
}
public static int toDecimal(String hexNumber) {
StringBuilder sb = new StringBuilder(HEX);
int decimalNumb = 0;
if (hexNumber == null || hexNumber.isEmpty())
return decimalNumb;
for (int i = 0; i < hexNumber.length() ; i++) {
int tmp = 0;
int index = hexNumber.length()-1-i;
int index2 = i+10;
if (sb.charAt(i) == hexNumber.charAt(i)) {
tmp = index2;
decimalNumb = tmp * (int) Math.pow(16, index) + decimalNumb;
continue;
}
else
decimalNumb = Character.getNumericValue(hexNumber.charAt(i)) * (int) Math.pow(16, index) + decimalNumb;
}
return decimalNumb;
}
}