Очень долго писал код для этой задачи, и вот не могу понять - что не так, пишет не работает второй метод. Пробовал через компилятор и ноль, и другие самые разные значения - всё проходит. Что не так??
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 = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
String s = binaryNumber;
String s16 = "";
if (s!=null && !s.equals("")) {
int k = 0;
while(s.length() % 4 != 0) {
s = "0" + s;
}
char[] array = s.toCharArray();
String a16 = "0123456789abcdef";
char[] ar16 = a16.toCharArray();
for (int i=0;i<s.length();i=i+4) {
k = (array[i] - 48)*8 + (array[i+1] - 48)*4 + (array[i+2] - 48)*2 + (array[i+3] - 48);
s16 = s16 + ar16[k];
}
}
return s16;
}
public static String toBinary(String hexNumber) {
String s2 = "";
String s = hexNumber;
if (s!=null && !s.equals("")) {
int k = 0;
char[] array = s.toCharArray();
String a16 = "0123456789abcdef";
char[] ar16 = a16.toCharArray();
String[] s16 = new String[23];
s16[0] = "0000";
s16[1] = "0001";
s16[2] = "0010";
s16[3] = "0011";
s16[4] = "0100";
s16[5] = "0101";
s16[6] = "0110";
s16[7] = "0111";
s16[8] = "1000";
s16[9] = "1001";
s16[10] = "1010";
s16[11] = "1011";
s16[12] = "1100";
s16[13] = "1101";
s16[14] = "1110";
s16[15] = "1111";
s16[16] = "1";
s16[17] = "10";
s16[18] = "11";
s16[19] = "00";
s16[20] = "101";
s16[21] = "110";
s16[22] = "111";
for (int i=0;i<s.length();i++) {
if (array[i]<48 || array[i]>57)
if (array[i]<97 || array[i]>102) return "";
if (array[i] < 58) {
if (i>0 || array[i]-48 > 7) s2 = s2 + s16[array[i]-48];
else s2 = s2 + s16[array[i]-33];
}
else s2 = s2 + s16[array[i]-87];
}
}
return s2;
}
}