Валидатор рекомендует убедиться, что метод toHex(String) возвращает пустую строку, если входящий параметр содержит любой символ, кроме 0 или 1. Не только в коде у себя вижу выполнение этого условия, но и проверка подтвердила. Или я что-то упустил?
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) {
if (binaryNumber == null || binaryNumber.equals(""))
return "";
StringBuilder temp = new StringBuilder();
for (int i = 0; i < binaryNumber.length() % 4; i++) {
temp.append("0");
}
temp.append(binaryNumber);
StringBuilder result = new StringBuilder();
for (int i = 0; i < temp.length(); i += 4) {
String substring = temp.substring(i, i + 4);
if (substring.equals("0000"))
result.append("0");
else if (substring.equals("0001"))
result.append("1");
else if (substring.equals("0010"))
result.append("2");
else if (substring.equals("0011"))
result.append("3");
else if (substring.equals("0100"))
result.append("4");
else if (substring.equals("0101"))
result.append("5");
else if (substring.equals("0110"))
result.append("6");
else if (substring.equals("0111"))
result.append("7");
else if (substring.equals("1000"))
result.append("8");
else if (substring.equals("1001"))
result.append("9");
else if (substring.equals("1010"))
result.append("a");
else if (substring.equals("1011"))
result.append("b");
else if (substring.equals("1100"))
result.append("c");
else if (substring.equals("1101"))
result.append("d");
else if (substring.equals("1110"))
result.append("e");
else if (substring.equals("1111"))
result.append("f");
else
return "";
}
return result.toString();
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals(""))
return "";
StringBuilder result = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
if (hexNumber.charAt(i) == '0')
result.append("0000");
else if (hexNumber.charAt(i) == '1')
result.append("0001");
else if (hexNumber.charAt(i) == '2')
result.append("0010");
else if (hexNumber.charAt(i) == '3')
result.append("0011");
else if (hexNumber.charAt(i) == '4')
result.append("0100");
else if (hexNumber.charAt(i) == '5')
result.append("0101");
else if (hexNumber.charAt(i) == '6')
result.append("0110");
else if (hexNumber.charAt(i) == '7')
result.append("0111");
else if (hexNumber.charAt(i) == '8')
result.append("1000");
else if (hexNumber.charAt(i) == '9')
result.append("1001");
else if (hexNumber.charAt(i) == 'a')
result.append("1010");
else if (hexNumber.charAt(i) == 'b')
result.append("1011");
else if (hexNumber.charAt(i) == 'c')
result.append("1100");
else if (hexNumber.charAt(i) == 'd')
result.append("1101");
else if (hexNumber.charAt(i) == 'e')
result.append("1110");
else if (hexNumber.charAt(i) == 'f')
result.append("1111");
else
return "";
}
return result.toString();
}
}