В результате работы в консоли выводятся правильные числа. Валидацию не проходит только по первым двум пунктам, типа должно быть реализовано согласно условию. Кто знает, в чем ошибка, подскажите пожалуйста!
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 hexNumber = "";
if ((binaryNumber == null) || (binaryNumber == ""))
return hexNumber;
for (int i = 0; i < binaryNumber.length(); i++) {
if ((binaryNumber.charAt(i) != '0') & (binaryNumber.charAt(i) != '1'))
return hexNumber;
}
if (binaryNumber.length() % 4 != 0)
binaryNumber = '0' * (4 - binaryNumber.length() % 4) + binaryNumber;
for (int i = 0; i < binaryNumber.length() - 3; i += 4) {
String curSubString = binaryNumber.substring(i, i + 4);
int hexValue = 0;
for (int j = 0; j < curSubString.length(); j++) {
int binValue = Character.getNumericValue(curSubString.charAt(curSubString.length() - 1 - j));
hexValue = hexValue + (int)(binValue * Math.pow(2, j));
}
hexNumber = hexNumber + HEX.charAt(hexValue);
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String binaryNumber = "";
if ((hexNumber == "") | (hexNumber == null))
return "";
for (int i = 0; i < hexNumber.length(); i++) {
if (HEX.indexOf(hexNumber.charAt(i)) == -1)
return binaryNumber;
}
for (int i = 0; i < hexNumber.length(); i++) {
int hexCharValue = HEX.indexOf(hexNumber.charAt(i));
if (hexCharValue == 0)
binaryNumber += "0000";
String currentBinaryNumber = "";
while (hexCharValue != 0) {
currentBinaryNumber = (hexCharValue % 2) + currentBinaryNumber;
hexCharValue = hexCharValue / 2;
}
binaryNumber += currentBinaryNumber;
}
return binaryNumber;
}
}