Метод toHex работает нормально, все условия отрабатывает. Или я что-то не понимаю?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
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) {
String HexNum = "";
if (binaryNumber == null)
return HexNum;
char[] binaryNumberCh = binaryNumber.toCharArray();
for (int i = 0; i < binaryNumber.length(); i++) {
if (binaryNumberCh[i] == '0' || binaryNumberCh[i] == '1')
continue;
else
return HexNum;
}
if (binaryNumber != null) {
if (binaryNumber.length()%4 != 0) {
int zero = binaryNumber.length()%4;
for (int i = 0; i < (4-zero); i++)
binaryNumber = 0 + binaryNumber;
}
for (int i = 0; i < binaryNumber.length(); i = i + 4) {
char[] f4 = new char[4];
binaryNumber.getChars(i, i + 4, f4, 0);
int a = (f4[0]-'0')*8+(f4[1]-'0')*4+(f4[2]-'0')*2+(f4[0]-'0');
HexNum = HexNum + HEX.charAt(a);
}
} return HexNum;
}
public static String toBinary(String hexNumber) {
String BinNum = "";
if (hexNumber == null)
return BinNum;
char[] BinNumCh = hexNumber.toCharArray();
for (int i = 0; i < hexNumber.length(); i++) {
char a = BinNumCh[i];
int b = HEX.indexOf(a);
if (b < 0)
return BinNum;
}
if (hexNumber != null) {
for (int i = 0; i < hexNumber.length(); i++) {
int a = HEX.indexOf(hexNumber.charAt(i));
BinNum = BinNum + a/8 + (a%8)/4 + (a%4)/2 + a%2;
}
} return BinNum;
}
}