Со статическими мапами нельзя. С мапами в методах нельзя. А с двойным преобразованием - лень :)
package com.javarush.task.pro.task09.task0908;
/*
Двоично-шестнадцатеричный конвертер
*/
import java.util.HashMap;
import java.util.Map;
public class Solution {
private static final String HEX = "0123456789abcdef";
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) return "";
Map<String, Character> BIN_HEX = new HashMap<>();
BIN_HEX.put("0000", '0');
BIN_HEX.put("0001", '1');
BIN_HEX.put("0010", '2');
BIN_HEX.put("0011", '3');
BIN_HEX.put("0100", '4');
BIN_HEX.put("0101", '5');
BIN_HEX.put("0110", '6');
BIN_HEX.put("0111", '7');
BIN_HEX.put("1000", '8');
BIN_HEX.put("1001", '9');
BIN_HEX.put("1010", 'a');
BIN_HEX.put("1011", 'b');
BIN_HEX.put("1100", 'c');
BIN_HEX.put("1101", 'd');
BIN_HEX.put("1110", 'e');
BIN_HEX.put("1111", 'f');
String res = "";
while (binaryNumber.length() != 0) {
String temp = binaryNumber.substring(binaryNumber.length() - 4);
res = BIN_HEX.get(temp) + res;
binaryNumber = binaryNumber.substring(0, binaryNumber.length() - 4);
}
return res;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null) return "";
Map<Character, String> HEX_BIN = new HashMap<>();
HEX_BIN.put('0', "0000");
HEX_BIN.put('1', "0001");
HEX_BIN.put('2', "0010");
HEX_BIN.put('3', "0011");
HEX_BIN.put('4', "0100");
HEX_BIN.put('5', "0101");
HEX_BIN.put('6', "0110");
HEX_BIN.put('7', "0111");
HEX_BIN.put('8', "1000");
HEX_BIN.put('9', "1001");
HEX_BIN.put('a', "1010");
HEX_BIN.put('b', "1011");
HEX_BIN.put('c', "1100");
HEX_BIN.put('d', "1101");
HEX_BIN.put('e', "1110");
HEX_BIN.put('f', "1111");
String res = "";
char[] numA = hexNumber.toCharArray();
for (char c:numA){
res = res + HEX_BIN.get(c);
}
return res;
}
}