1. Если ввести пустую строку, возвращается пустая строка 2. Если ввести строку, которая содержит что-то кроме 0-9 или A-F, возвращается пустая строка 3. Метод возвращает корректное значение Что не так?
package com.javarush.task.pro.task09.task0908;

import java.util.regex.Pattern;

/*
Двоично-шестнадцатеричный конвертер
*/

public class Solution {

    public static void main(String[] args) {
        String binaryNumber = "000100111010000";
        System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
        String hexNumber = "123";
        System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
    }

    public static String toHex(String binaryNumber) {
        //напишите тут ваш код
        String HEX = "0123456789abcdef";
        String hex = "";
        if (binaryNumber == null) {
            return hex;
        }
        int decimal = 0;

        for (int i = 0; i < binaryNumber.length(); i++) {
            int index = binaryNumber.length() - 1 - i;
            decimal = (int) (decimal + Character.getNumericValue(binaryNumber.charAt(index)) * Math.pow(2, i));
        }

        while (decimal != 0) {
            int idx = decimal % 16;
            hex = HEX.charAt(idx) + hex;
            decimal = decimal / 16;
        }

        return hex;
    }

    public static String toBinary(String hexNumber) {
        //напишите тут ваш код
        String bin = "";
        if (hexNumber == null || !(hexNumber.matches("[0-9a-f]+"))) {
            return bin;
        }
        while (hexNumber.length() % 4 != 0) {
            hexNumber = 0 + hexNumber;
        }
        String HEX = "0123456789abcdef";
        int decimal = 0;

        for (int i = 0; i < hexNumber.length(); i++) {
            decimal = 16 * decimal + HEX.indexOf(hexNumber.charAt(i));
        }
        if (decimal == 0) {
            bin = "0000";
            return bin;
        }

        while (decimal != 0) {
            bin = (decimal % 2) + bin;
            decimal = decimal / 2;
        }



        return bin;
    }
}