Программа рабочая, все условия учтены, но валидатор не пропускает метод toBinary()
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = "1010001011101";
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 hexNumber = "";
if (binaryNumber == null || !binaryNumber.matches("[0-1]+"))
return "";
if ((binaryNumber.length() % 4) != 0) {
while ((binaryNumber.length() % 4) != 0)
binaryNumber = 0 + binaryNumber;
}
for (int i = 0; i < binaryNumber.length()/4; i++) {
int decimalNumber = 0;
String b = binaryNumber.substring(4*i, 4*(i+1));
for (int j = 0; j < 4; j++) {
decimalNumber += Integer.parseInt(b.substring(3 - j, 4 - j)) * (int)(Math.pow(2, j));
}
hexNumber += HEX.charAt(decimalNumber);
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String HEX = "0123456789abcdef";
String binaryNumber = "";
if (hexNumber == null || !hexNumber.matches("[0-9a-f]+"))
return "";
for (int i = 0; i < hexNumber.length(); i++) {
int b = HEX.indexOf(hexNumber.charAt(i));
String a = "";
if (b == 0)
a = "0000";
for (int j = 0; j < 4; j++) {
a = (b % 2) + a;
b /= 2;
}
binaryNumber += a;
}
return binaryNumber;
}
}