После вложенного цикла у меня есть проверка на пустую строку, что фактически значит отсутствие нужного символа в строке в обоих случаях, но валидатор почему-то отказывается это принимать.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static String[] binaryhex = new String[]{"0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};
public static String[] hex = new String[]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
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 mainHex = "";
if (binaryNumber == null) return "";
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
for (int i = 0, j = 4; j <= binaryNumber.length(); i = i + 4, j = j + 4) {
String check = binaryNumber.substring(i, j);
for (int b = 0; b < 16; b++) {
if (check.equals(binaryhex[b])) {
mainHex = mainHex + hex[b];
}
}
if(mainHex.equals("")) return "";
}
binaryNumber = mainHex;
return binaryNumber;
}
public static String toBinary(String hexNumber) {
String mainBinary = "";
int sum = 0;
if (hexNumber == null) return "";
for (int i = 0 ;i < hexNumber.length(); i++) {
String check = String.valueOf(hexNumber.charAt(i));
for (int b = 0; b < 16; b++) {
if (check.equals(hex[b])) {
mainBinary = mainBinary + binaryhex[b];
}
}
if(mainBinary.equals("")) return "";
}
hexNumber = mainBinary;
return hexNumber;
}}