Нужно, чтобы метод toHex(String) был реализован согласно условию.
Нужно, чтобы метод toBinary(String) был реализован согласно условию.
Вероятно если бы два данных требования были расписаны поподробнее, я бы мог разобраться, в чем дело и самостоятельно решить эту задачу, но увы, я не понимаю. Прошу помощи, что неверно или хотя-бы в какую сторону думать. P.S. решение конечно не идеально, но я слышал что в правильном решении там чуть-ли не посимвольно разбирается всё через if-else, спасибо, но тогда мне кажется мое решение через HashMap уж точно не хуже.
package com.javarush.task.pro.task09.task0908;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static HashMap<String, String> table = new HashMap<>();
public static void main(String[] args) {
table.put("0000", "0");
table.put("0001", "1");
table.put("0010", "2");
table.put("0011", "3");
table.put("0100", "4");
table.put("0101", "5");
table.put("0110", "6");
table.put("0111", "7");
table.put("1000", "8");
table.put("1001", "9");
table.put("1010", "a");
table.put("1011", "b");
table.put("1100", "c");
table.put("1101", "d");
table.put("1110", "e");
table.put("1111", "f");
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(""))
return "";
if (!binaryNumber.matches("[0-1]+")) return "";
StringBuilder binary = new StringBuilder(binaryNumber);
if (binaryNumber.length() % 4 != 0) {
while (binary.length() % 4 != 0) {
binary.insert(0, 0);
}
}
StringBuilder result = new StringBuilder();
for (int i = 0; i < binary.length(); ) {
result.append(table.get(binary.substring(i, i + 4)));
i = i + 4;
}
return result.toString();
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals(""))
return "";
if (!hexNumber.matches("[0-9a-f]+")) return "";
StringBuilder result = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
for (Map.Entry<String, String> entry : table.entrySet()) {
if (String.valueOf(hexNumber.charAt(i)).equals(entry.getValue())) result.append(entry.getKey());
}
}
return result.toString();
}
}