Не пропускает по второму условию
package com.javarush.task.pro.task09.task0908;

import java.util.Arrays;
import java.util.regex.Pattern;

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

public class Solution {
    private static final String HEX = "0123456789abcdef";

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

    public static String toHex(String binaryNumber) {
        //напишите тут ваш код
        String toHex = "";
        if (binaryNumber == null || binaryNumber.equals("")) return toHex;
        if (!binaryNumber.matches("[0-1]+")) return toHex;
        if (binaryNumber.length()%4 != 0) {
            char[] repeat = new char[binaryNumber.length()%4];
            Arrays.fill(repeat, '0');
            binaryNumber = new String(repeat) + binaryNumber;
        }
        int decimalNumber = 0;
        for (int i = 0; i < binaryNumber.length(); i++) {
            decimalNumber += binaryNumber.charAt(binaryNumber.length() - i - 1) == '1' ? Math.pow(2, i) : 0;
        }
        while(decimalNumber!=0){
            toHex = HEX.charAt(decimalNumber%16)+toHex;
            decimalNumber = decimalNumber/16;
        }

        return toHex;
    }

    public static String toBinary(String hexNumber) {
        //напишите тут ваш код
        String binaryNumber = "";
        int decimalNumber = 0;
        if (hexNumber == "" || hexNumber == null) return binaryNumber;
        for (int i = 0; i < hexNumber.length(); i++) {
            char ch = hexNumber.charAt(i);

            int ab = HEX.indexOf(ch);
            if (ab < 0) {
                return binaryNumber;
            }
        }
        //if (!Pattern.matches("[0-9a-f]+", hexNumber)) return binaryNumber;
        for (int i = 0; i < hexNumber.length(); i++) {
            decimalNumber = 16 * decimalNumber + HEX.indexOf(hexNumber.charAt(i));
        }
        //if (decimalNumber <= 0) return "";
        while (decimalNumber != 0) {
            binaryNumber = decimalNumber % 2 + binaryNumber;
            decimalNumber = decimalNumber / 2;
        }
        return binaryNumber;
    }
}