Помогите решить задачу, не проходит по первому условию. Ради эксперимента брал решение из готового ответа javarush, а так же решения других пользователей, итог один - не проходит.
package com.javarush.task.pro.task09.task0908;
import java.util.Arrays;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
static String[] binaryMatrix = {"0000", "0001", "0010",
"0011", "0100", "0101",
"0110", "0111", "1000",
"1001", "1010", "1011",
"1100", "1101", "1110", "1111"};
static String[] hexMatrix = {"0", "1", "2",
"3", "4", "5",
"6", "7", "8",
"9", "a", "b",
"c", "d", "e", "f"};
public static void main(String[] args) {
String binaryNumber = "111111111111";
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() || !binaryNumber.matches("[0,1]+"))
return "";
if (binaryNumber.length() % 4 != 0) {
StringBuilder temp = new StringBuilder(binaryNumber);
temp.reverse();
for (int i = 0; i < binaryNumber.length() % 4; i++) {
temp.append("0");
}
binaryNumber = temp.reverse().toString();
}
StringBuilder hex = new StringBuilder();
for (int i = 0; i < binaryNumber.length(); i += 4) {
hex.append(hexMatrix[Arrays.binarySearch(binaryMatrix, binaryNumber.substring(i, i + 4))]);
}
return hex.toString();
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null || hexNumber.isEmpty() || !hexNumber.matches("[0-9a-f]+"))
return "";
StringBuilder binaryNumber = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
binaryNumber.append(binaryMatrix[Arrays.binarySearch(hexMatrix, hexNumber.charAt(i) + "")]);
}
return binaryNumber.toString();
}
}