Все валидации проходит, но мне не нравится решение.. возможно есть варианты меньшим кол-вом циклов обойтись, заменив их на стандартные методы и сделать код более читаемым?
package com.javarush.task.pro.task09.task0908;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Scanner;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = null;
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static final String[] bin = {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
public static final String[] hex = { "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "a" , "b" , "c" , "d" , "e" , "f" };
public static String toHex(String binaryNumber) {
String res = "";
if ((binaryNumber == null) || (binaryNumber.equals("")) || (binaryNumber.matches("[0-1]+")==false) ) return res;
else {
while (binaryNumber.length()%4!=0) {
binaryNumber = "0" + binaryNumber;
}
for (int i = 0; i < binaryNumber.length()/4; i++) {
String tmp = binaryNumber.substring(i*4,i*4+4);
int index = -1;
int j=0;
while (index==-1) {
if (bin[j].equals(tmp)) index = j;
j++;
}
res = res + hex[index];
}
}
return res;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
return null;
}
}