Почему-то не проходит проверку метод toHex
package com.javarush.task.pro.task09.task0908;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static Map<String, String> TO_HEX;
public static Map<Character, String> TO_BIN;
public static Set<Character> HEX;
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) {
//напишите тут ваш код
initToHexMap();
String hexNumber = "";
if (binaryNumber == null || binaryNumber.equals("")) {
return hexNumber;
}
char[] binaryChars = binaryNumber.toCharArray();
for (int i = 0; i < binaryChars.length; i++) {
if (binaryChars[i] != '0' && binaryChars[i] != '1'){
return hexNumber;
}
}
int ost = binaryNumber.length() % 4;
if (ost != 0) {
String number = "";
for (int i = ost; i < 4; i++) {
number += "0";
}
for (int i = 0; i < ost; i++) {
number += binaryChars[i];
}
hexNumber += TO_HEX.get(number);
}
if (binaryNumber.length() / 4 == 0 && ost != 0) {
return hexNumber;
}
for (int i = (ost == 0 ? 0 : ost - 1); i < binaryNumber.length(); i += 4) {
String number = "";
for (int j = 0; j < 4; j++) {
number += binaryChars[i + j];
}
hexNumber += TO_HEX.get(number);
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
initToBinMap();
String binaryNumber = "";
if (hexNumber == null || hexNumber.equals("")) {
return binaryNumber;
}
for (int i = 0; i < hexNumber.length(); i++) {
char number = hexNumber.charAt(i);
if (!HEX.contains(number)) {
return "";
}
binaryNumber += TO_BIN.get(number);
}
return binaryNumber;
}
public static void initToBinMap() {
if (TO_BIN != null) {
return;
}
TO_BIN = new HashMap<>();
TO_BIN.put('0',"0000");
TO_BIN.put('1',"0001");
TO_BIN.put('2',"0010");
TO_BIN.put('3',"0011");
TO_BIN.put('4',"0100");
TO_BIN.put('5',"0101");
TO_BIN.put('6',"0110");
TO_BIN.put('7',"0111");
TO_BIN.put('8',"1000");
TO_BIN.put('9',"1001");
TO_BIN.put('a',"1010");
TO_BIN.put('b',"1011");
TO_BIN.put('c',"1100");
TO_BIN.put('d',"1101");
TO_BIN.put('e',"1110");
TO_BIN.put('f',"1111");
HEX = new HashSet<>();
HEX.add('0');
HEX.add('1');
HEX.add('2');
HEX.add('3');
HEX.add('4');
HEX.add('5');
HEX.add('6');
HEX.add('7');
HEX.add('8');
HEX.add('9');
HEX.add('a');
HEX.add('b');
HEX.add('c');
HEX.add('d');
HEX.add('e');
HEX.add('f');
}
public static void initToHexMap() {
if (TO_HEX != null) {
return;
}
TO_HEX = new HashMap<>();
TO_HEX.put("0000", "0");
TO_HEX.put("0001", "1");
TO_HEX.put("0010", "2");
TO_HEX.put("0011", "3");
TO_HEX.put("0100", "4");
TO_HEX.put("0101", "5");
TO_HEX.put("0110", "6");
TO_HEX.put("0111", "7");
TO_HEX.put("1000", "8");
TO_HEX.put("1001", "9");
TO_HEX.put("1010", "a");
TO_HEX.put("1011", "b");
TO_HEX.put("1100", "c");
TO_HEX.put("1101", "d");
TO_HEX.put("1110", "e");
TO_HEX.put("1111", "f");
}
}