объясните
Нужно, чтобы метод toBinary(String) был реализован согласно условию.
Я проверял на разных входящих данных, если буквы выходят за диапазон, то выходит пустая строка. Если передается пустой параметр, то тоже выходит пустая строка. Но валидатор не пропускает. Не понимаю почему.
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 hex = "";
String ex = "0123456789abcdef";
if (binaryNumber == null) {
return hex;
}
int num = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
char c = binaryNumber.charAt(binaryNumber.length() - 1 - i);
if (c == '1' || c == '0') {
int n = c == '1' ? 1 : 0;
num = (int) (num + n * Math.pow(2, i));
} else {
return hex;
}
}
while (num != 0) {
hex = ex.charAt(num % 16) + hex;
num = num / 16;
}
return hex;
}
public static String toBinary(String hexNumber) {
String binar = "";
String hex = "0123456789abcdef";
if (hexNumber == null) {
return binar;
}
int num = 0;
for (int i = 0; i < hexNumber.length(); i++) {
int index = hex.indexOf(hexNumber.charAt(i));
if (index != -1) {
num = 16 * num + index;
} else {
return binar;
}
}
while (num != 0) {
binar = (num % 2) + binar;
num = num /2;
}
return binar;
}
}