Не понимаю почему не пропускает. Не хочу отходить от своего решения.
package com.javarush.task.pro.task09.task0908;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
private static final String BINERY_SYMBOLS = "01";
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 hexNumber = "";
if (binaryNumber == null || binaryNumber.isEmpty()) {
return hexNumber;
}
for (int i = 0; i < binaryNumber.length(); i++) {
if (BINERY_SYMBOLS.indexOf(binaryNumber.charAt(i)) == -1) {
return hexNumber;
}
}
while (binaryNumber.length() % 4 != 0){
binaryNumber = 0 + binaryNumber;
}
for (int i = 0; i < binaryNumber.length(); i+=4){
int degreeNumber;
int decimalNumber = 0;
for (int j = 0; j < 4; j++){
degreeNumber = (int) Math.pow(2, 3 - j);
decimalNumber += Character.getNumericValue(binaryNumber.charAt(i + j)) * degreeNumber;
}
hexNumber = HEX.charAt(decimalNumber) + hexNumber;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber = "";
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
hexNumber = hexNumber.toLowerCase();
for (int i = 0; i < hexNumber.length(); i++) {
if (HEX.indexOf(hexNumber.charAt(i)) == -1) {
return binaryNumber;
}
}
int decimalNumber = 0;
int degreeNumber;
for (int i = 0; i < hexNumber.length(); i++){
int number = HEX.indexOf(hexNumber.charAt(i));
degreeNumber = (int) Math.pow(16, hexNumber.length() - i - 1);
decimalNumber += number * degreeNumber;
}
while(decimalNumber > 0){
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber /= 2;
}
return binaryNumber;
}
}