В консоль выводится верный ответ, но валидатор меня не пропускает, в чём я могу ошибаться?
package com.javarush.task.pro.task09.task0908;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public 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) {
String result = "";
if (binaryNumber != null) {
while (binaryNumber.length() % 4 != 0) {
binaryNumber = '0' + binaryNumber;
}
for (int i = 0; i < binaryNumber.length(); i+=4) {
int j = i + 4;
String temp = String.valueOf(HEX.charAt(getDecimalFromBinary(binaryNumber.substring(i, j)) % 16));
result = result + temp;
}
}
return result;
}
public static String toBinary(String hexNumber) {
String result = "";
if (hexNumber != null) {
int decimal = getDecimalByHex(hexNumber);
while (decimal != 0) {
result = decimal % 2 + result;
decimal /= 2;
}
return result;
}
return result;
}
private static int getDecimalFromBinary(String binaryNumber) {
int decimal = 0;
int j = binaryNumber.length()-1;
for (int i = 0; i < binaryNumber.length(); i++, j--) {
decimal += (int) (binaryNumber.charAt(j) * Math.pow(2, i));
}
return decimal;
}
private static int getDecimalByHex(String hexNumber) {
int decimal = 0;
for (int i = 0 ; i < hexNumber.length(); i++) {
decimal = 16 * decimal + HEX.indexOf(hexNumber.charAt(i));
}
return decimal;
}
}