Не пропускает по второму условию.
Все работает как положено, но почему-то не пропускает валидатор и не пишет почему не пропускает.
Подскажите что не так?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
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 binary) {
if(binary == null)
return "";
int count = 0;
String HEX = "0123456789abcdef";
/**Сравниваем входящую строку с 0 и 1 */
for (int i = 0; i < binary.length(); i++) {
if (binary.toCharArray()[i] == '0' || binary.toCharArray()[i] == '1')
count++;
}
if (count < binary.length())
return "";
/**Добавляем нули если число не кратно 4 */
if (binary.length() % 4 > 0) {
for (int i = 0; i < binary.length() % 4; i++) {
binary = "0" + binary;
}
}
int desyatChiclo = 0;
String str = "";
for (int i = 0; i < binary.length(); i += 4) {
String s = binary.substring(i, i + 4);
/**Реверс строки с двоичным кодом */
StringBuilder stringBuilder = new StringBuilder(s);
stringBuilder.reverse();
s = String.valueOf(stringBuilder);
/**Преобразуем двоичное в десятеричное */
for (int j = 0; j < s.length(); j++) {
desyatChiclo = (int) (desyatChiclo + Integer.parseInt(String.valueOf(s.toCharArray()[j])) * Math.pow(2, j));
}
str += HEX.toCharArray()[desyatChiclo];
desyatChiclo = 0;
}
return str;
}
public static String toBinary(String hexNumber) {
if(hexNumber == null)
return "";
String dvoichPred = "0";
String svod = "";
String HEX = "0123456789abcdef";
int desyat = 0;
int count = 0;
for(int i = 0; i < hexNumber.length(); i++) {
for(int j = 0; j < HEX.length(); j++) {
if(String.valueOf(hexNumber.toCharArray()[i]).equals(String.valueOf(HEX.toCharArray()[j]))) {
count++;
}
}
}
if(count != hexNumber.length()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
desyat = 16 * desyat + HEX.indexOf(hexNumber.toCharArray()[i]);
}
while (desyat != 0) {
dvoichPred = String.valueOf((desyat % 2) + Integer.parseInt(dvoichPred));
desyat = desyat / 2;
svod += dvoichPred;
dvoichPred = "0";
}
StringBuilder stringBuilder = new StringBuilder(svod);
stringBuilder.reverse();
svod = String.valueOf(stringBuilder);
return svod;
}
}