Здравствуйте, люди добрые
Пожалуйста, помогите мне найти неверный поворот в моем решении.
Валидатор говорит что условия для обоих методов не выполняются.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
public static void main(String[] args) {
String binaryNumber = "10001";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "af08";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
if (binaryNumber == null || binaryNumber.isEmpty() || !Pattern.matches("[0-1]+", binaryNumber)) {
return "";
}
//Проверяем длину строки, полученной входящим параметром. Она должна быть кратна 4
//Если это не так, то добавляем нужное количество 0 в начало строки.
while (binaryNumber.length()%4 !=0){
binaryNumber = binaryNumber + "0";
}
String HexNumber = "";
int decimalNumber = 0;
//Берем каждые четыре символа (бита) и проверяем, какому символу шестнадцатеричной кодировки он соответствует.
for (int i = 0; i <=(binaryNumber.length()-4) ;) {
String part = binaryNumber.substring(i, i+4);
i = i+4;
for (int j = 0; j < part.length(); j++) {
int x = part.length() - j - 1;
int binum = Character.getNumericValue(part.charAt(x));
decimalNumber += binum * Math.pow(2, j);
}
while(decimalNumber != 0) {
int x = decimalNumber % 16;
HexNumber = HexNumber + HEX.charAt(x);
decimalNumber = decimalNumber / 16;
}
if (part.equals("0000")) {
HexNumber = HexNumber + "0";
}
}
return HexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null || hexNumber.isEmpty() || !Pattern.matches("[0-9a-f]+", hexNumber)) {
return "";
}
//Берем каждый символ и проверяем какому двоичному числу (4 бита) он соответствует.
int decimalNumber = 0;
//if (субстрока java конвертировать в число hexNumber == null || hexNumber.length() == 0) {return decimalNumber;}
int x = hexNumber.length();
for (int i = 0; i < x; i++) {
int charind = HEX.indexOf(hexNumber.charAt(i));
decimalNumber = 16 * decimalNumber + charind;
}
String binaryNumber = "";
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
String binaryString = String.valueOf(binaryNumber);
return binaryString;
}
}