Добрый день!
Что валидатору не нравится? Первые два условия не проходит. Хотя все отрабатывает верно.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
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.isEmpty()) {return ""; }
int l = binaryNumber.length();
binaryNumber = "0".repeat(l % 4) + binaryNumber;
StringBuilder hexNumber = new StringBuilder();
for (int i = 0; i < binaryNumber.length() ; i = i + 4) {
String str = binaryNumber.substring(i, i+4);
switch (str) {
case "0000" -> hexNumber.append("0");
case "0001" -> hexNumber.append("1");
case "0010" -> hexNumber.append("2");
case "0011" -> hexNumber.append("3");
case "0100" -> hexNumber.append("4");
case "0101" -> hexNumber.append("5");
case "0110" -> hexNumber.append("6");
case "0111" -> hexNumber.append("7");
case "1000" -> hexNumber.append("8");
case "1001" -> hexNumber.append("9");
case "1010" -> hexNumber.append("a");
case "1011" -> hexNumber.append("b");
case "1100" -> hexNumber.append("c");
case "1101" -> hexNumber.append("d");
case "1110" -> hexNumber.append("e");
case "1111" -> hexNumber.append("f");
default -> {
return "";
}
}
;
}
return hexNumber.toString();
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.isEmpty()) {return ""; }
StringBuilder binaryNumber = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
if (hexNumber.charAt(i) == '0') binaryNumber.append("0000");
else if (hexNumber.charAt(i) == '1') binaryNumber.append("0001");
else if (hexNumber.charAt(i) == '2') binaryNumber.append("0010");
else if (hexNumber.charAt(i) == '3') binaryNumber.append("0011");
else if (hexNumber.charAt(i) == '4') binaryNumber.append("0100");
else if (hexNumber.charAt(i) == '5') binaryNumber.append("0101");
else if (hexNumber.charAt(i) == '6') binaryNumber.append("0110");
else if (hexNumber.charAt(i) == '7') binaryNumber.append("0111");
else if (hexNumber.charAt(i) == '8') binaryNumber.append("1000");
else if (hexNumber.charAt(i) == '9') binaryNumber.append("1001");
else if (hexNumber.charAt(i) == 'a') binaryNumber.append("1010");
else if (hexNumber.charAt(i) == 'b') binaryNumber.append("1011");
else if (hexNumber.charAt(i) == 'c') binaryNumber.append("1010");
else if (hexNumber.charAt(i) == 'd') binaryNumber.append("1011");
else if (hexNumber.charAt(i) == 'e') binaryNumber.append("1110");
else if (hexNumber.charAt(i) == 'f') binaryNumber.append("1111");
else {return ""; }
}
return binaryNumber.toString();
}
}