Не засчитывается только первый пункт (реализовать "toHex" согласно условию). Результат выполнения функций верный.
(Детали/уточнения/пояснения ошибки просмотреть невозможно, как, например, при несоответствии условию на сравнение с "null" или пустой строкой.)
package com.javarush.task.pro.task09.task0908;
import java.util.*;
/*
Двоично-шестнадцатеричный конвертер
*/
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 binaryNumber) {
if(binaryNumber == null || binaryNumber.equals("") || binaryNumber.matches(".*[^01].*")) return "";
String binaryString;
String hexString = "";
if(binaryNumber.length() % 4 != 0) binaryString = "0".repeat(4 - (binaryNumber.length() % 4)) + binaryNumber;
final HashMap<String, String> HEX = new HashMap<>();
HEX.put("0000", "0");
HEX.put("0001", "1");
HEX.put("0010", "2");
HEX.put("0011", "3");
HEX.put("0100", "4");
HEX.put("0101", "5");
HEX.put("0110", "6");
HEX.put("0111", "7");
HEX.put("1000", "8");
HEX.put("1001", "9");
HEX.put("1010", "a");
HEX.put("1011", "b");
HEX.put("1100", "c");
HEX.put("1101", "d");
HEX.put("1110", "e");
HEX.put("1111", "f");
for(int i = 0; i < (binaryNumber.length()/4); i++) {
hexString += HEX.get( binaryNumber.substring(4*i, 4*i+4) );
}
return hexString;
}
public static String toBinary(String hexNumber) {
if(hexNumber == null || hexNumber.equals("") || hexNumber.matches(".*[^0-9a-fA-F].*")) return "";
String binaryString = "";
final HashMap<String, String> BIN = new HashMap<>();
BIN.put("0", "0000");
BIN.put("1", "0001");
BIN.put("2", "0010");
BIN.put("3", "0011");
BIN.put("4", "0100");
BIN.put("5", "0101");
BIN.put("6", "0110");
BIN.put("7", "0111");
BIN.put("8", "1000");
BIN.put("9", "1001");
BIN.put("a", "1010");
BIN.put("b", "1011");
BIN.put("c", "1100");
BIN.put("d", "1101");
BIN.put("e", "1110");
BIN.put("f", "1111");
for(int i = 0; i < hexNumber.length(); i++) {
binaryString += BIN.get( Character.toString(hexNumber.charAt(i)) );
}
return binaryString;
}
}