перевіряю з різними даними на вході і все відпрацьовує, а валідатор все одно каже що метод toBinary(String hexNumber) неправильно реалізовано
package ua.javarush.task.pro.task09.task0908;
/*
Двійково-шістнадцятковий конвертер
*/
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));
}
public static String toHex(String binaryNumber) {
//напишіть тут ваш код
if (binaryNumber == null || binaryNumber.isEmpty()) {
return "";
} else {
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
int decimal = 0;
int countDown = binaryNumber.length() - 1;
for (int i = 0; i < binaryNumber.length(); i++) {
decimal = (int) (decimal + Character.digit(binaryNumber.charAt(countDown), 10) * Math.pow(2, i));
countDown--;
}
String hex = new String();
int decimalToHex = decimal;
while (decimalToHex != 0) {
hex = HEX.charAt(decimalToHex % 16) + hex;
decimalToHex = decimalToHex / 16;
}
return hex;
}
}
public static String toBinary(String hexNumber) {
//напишіть тут ваш код
boolean hexRange = false;
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
int symbol = (int) hexNumber.charAt(i);
if (symbol <= 96 || symbol >= 103) {
if ((symbol <= 47 || symbol >= 58)) {
hexRange = true;
}
}
}
if (hexRange == true) {
return "";
} else {
int decimal = 0;
for (int i = 0; i < hexNumber.length(); i++) {
char hexChar = hexNumber.charAt(i);
int hexIndex = HEX.indexOf(hexChar);
decimal = 16 * decimal + hexIndex;
}
String binary = new String();
while (decimal != 0) {
binary = decimal % 2 + binary;
decimal = decimal / 2;
}
return binary;
}
}
}