Несколько часов воюю с этой задачей, глаз уже замылился, подскажите, что не так?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String[] HEX = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d", "e", "f"};
private static final String[] BINARY = {"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111",
"1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
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 "";
}
for (int i = 0; i < binaryNumber.length(); i++) {
if (binaryNumber.charAt(i) != '0' && binaryNumber.charAt(i) != '1') {
return "";
}
}
String[] tempArray = new String[binaryNumber.length() / 4];
String result = "";
for (int i = 0; i < binaryNumber.length(); i = i + 4) {
for (int j = 0; j < BINARY.length; j++) {
if ( binaryNumber.substring(i, i + 3 + 1).equals(BINARY[j])) {
result = result + HEX[j];
}
}
}
return result;
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
if ( (hexNumber.charAt(i) >= '0' && hexNumber.charAt(i) <= '9') ||
(hexNumber.charAt(i) >= 'a' && hexNumber.charAt(i) <= 'f') ) {
}
else return "";
}
String result = "";
String[] tempArray = hexNumber.split("");
for (int i = 0; i < tempArray.length; i++) {
for (int j = 0; j < HEX.length; j++) {
if (tempArray[i].equals(HEX[j])) {
result = result + BINARY[j];
}
}
}
return result;
}
}