Всем привет! подскажите пж почему первые два требования не выполняются 😭
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.contains("0") || !binaryNumber.contains("1") || binaryNumber == null) {
return "";
} else {
int length = binaryNumber.length();
int padding = (4 - (length % 4)) % 4; // количество нулей для дополнения до полного блока
binaryNumber = "0".repeat(padding) + binaryNumber;
// Группировка по 4 бита и перевод в шестнадцатеричную систему
StringBuilder hexResult = new StringBuilder();
for (int i = 0; i < length + padding; i += 4) {
String block = binaryNumber.substring(i, i + 4);
int decimalValue = Integer.parseInt(block, 2);
char hexDigit = Character.forDigit(decimalValue, 16);
hexResult.append(hexDigit);
}
// Возвращаем итоговый результат
return hexResult.toString();
}
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (!hexNumber.matches(".*[0-9A-Fa-f].*") || hexNumber == null) {
return "";
} else {
// Переводим строку в верхний регистр (на всякий случай)
hexNumber = hexNumber.toUpperCase();
// Создаем StringBuilder для хранения двоичного представления
StringBuilder binaryResult = new StringBuilder();
// Таблица преобразования шестнадцатеричных цифр в их двоичное представление
String[] hexToBinary = {
"0000", //0 (в шестнадцатеричной)
"0001", //1
"0010", //2
"0011", //3
"0100", //4
"0101", //5
"0110", //6
"0111", //7
"1000", //8
"1001", //9
"1010", //A (в шестнадцатеричной)
"1011", //B
"1100", //C
"1101", //D
"1110", //E
"1111" //F
};
// Проходим по каждому символу в строке с шестнадцатеричным числом
for (int i = 0; i < hexNumber.length(); i++) {
char hexDigit = hexNumber.charAt(i);
// Получаем двоичное представление каждой цифры шестнадцатеричного числа из таблицы
int digitValue = Character.digit(hexDigit, 16);
String binaryDigit = hexToBinary[digitValue];
// Добавляем двоичное представление в результат
binaryResult.append(binaryDigit);
}
// Возвращаем итоговую строку с двоичным представлением
return binaryResult.toString();
}
}
}