Выводит все правильно, а валидатор ругается. В чем проблема?
package com.javarush.task.pro.task09.task0908;
import java.util.Scanner;
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.isEmpty()) return "";
for (int i = 0; i < binaryNumber.length(); i++) {
if (binaryNumber.charAt(i) != '1' && binaryNumber.charAt(i) != '0') return "";
}
StringBuilder sb = new StringBuilder(binaryNumber);
if (sb.length() % 4 != 0) {
for (int i = 0; i < sb.length() % 4; i++) {
sb.insert(0, "0");
}
}
String result = "";
int hex = 0;
for (int i = 0; i < sb.length(); i = i + 4) {
String fourBites = sb.substring(i, i + 4);
for (int j = 0; j < fourBites.length() ; j++) {
int oneBit = (int) (Integer.parseInt(Character.toString(fourBites.charAt(fourBites.length() - 1 - j))) * Math.pow(2, j));
hex += oneBit;
}
if (hex < 10) {
result += hex;
} else if (hex == 10) {
result += 'a';
} else if (hex == 11) {
result += 'b';
} else if (hex == 12) {
result += 'c';
} else if (hex == 13) {
result += 'd';
} else if (hex == 14) {
result += 'e';
} else if (hex == 15) {
result += 'f';
}
hex = 0;
}
return result;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null || hexNumber.isEmpty()) return "";
for (int i = 0; i < hexNumber.length(); i++) {
char nextChar = hexNumber.charAt(i);
if (!Character.isDigit(nextChar) && nextChar != 'a' && nextChar != 'b' &&
nextChar != 'c' && nextChar != 'd' && nextChar != 'e' && nextChar != 'f') {
return "";
}
}
StringBuilder sb = new StringBuilder();
String result = "";
for (int i = 0; i < hexNumber.length(); i++) {
char nextByte = hexNumber.charAt(i);
int intByte = 0;
if (Character.isDigit(nextByte)) {
intByte = Integer.parseInt(Character.toString(nextByte));
if (intByte == 0) {
result += "0000";
continue;
}
while (intByte != 0) {
sb.insert(0, intByte % 2);
intByte /= 2;
}
result += sb;
sb.delete(0, sb.length()-1);
} else {
if (nextByte == 'a') {
intByte = 10;
} else if (nextByte == 'b') {
intByte = 11;
} else if (nextByte == 'c') {
intByte = 12;
} else if (nextByte == 'd') {
intByte = 13;
} else if (nextByte == 'e') {
intByte = 14;
} else if (nextByte == 'f') {
intByte = 15;
}
while (intByte != 0) {
sb.insert(0, intByte % 2);
intByte /= 2;
}
result += sb;
sb.delete(0, sb.length() - 1);
}
}
return result;
}
}