Решил задачу своим способом, но вот в обоих методах не могу настроить проверку на NULL, что я делаю не так?
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 = "90d";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
String[] array1 = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
String[] array2 = new String[]{"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
StringBuffer sb = new StringBuffer(binaryNumber);
StringBuffer result = new StringBuffer();
if (binaryNumber == null ) {
return result.toString();
}
for (double i = binaryNumber.length() % 4; i % 4 != 0; i++) //пока длина строки не будет кратно 4
{
sb.insert(0, "0"); // к строке sb будем прибавляться спереди 0
}
for (int i = 0; i < sb.length() / 4; i++) {
for (int j = 0; j < 16; j++) {
if (array2[j].toString().equals((sb.substring(i * 4, i * 4 + 4)))) {
result.insert(i, array1[j]);
break;
}
}
}
return result.toString();
}
public static String toBinary(String hexNumber)
{
char[] array1 = new char[]{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
String[] array2 = new String[]{"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
char[] sb = hexNumber.toCharArray();
StringBuffer result = new StringBuffer();
if (hexNumber==null)
{
return result.toString();
}
for (int i = 0; i < sb.length; i++)
{
for (int j = 0; j < 16; j++)
{
if (sb[i]==array1[j])
{
result.insert(i*4, array2[j]);
break;
}
}
}
return result.toString();
}
}