Несмотря на то, что код работает исправно, и на практике все условия соблюдены, валидатор выдаёт ошибку и ругается на метод toBinary.
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) {
if (binaryNumber == null || binaryNumber.equals("")) return"";
for (int i = 0; i < binaryNumber.length(); i++) {
if(binaryNumber.charAt(i) != '1' && binaryNumber.charAt(i) != '0') return "";
}
return decimalToHex(binaryToDecimal(binaryNumber));
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals("")) return"";
boolean contains = false;
for (int i = 0; i < hexNumber.length(); i++) {
for (int j = 0; j < HEX.length(); j++) {
if (hexNumber.charAt(i) == HEX.charAt(j)){
contains = true;
break;
}
else{
contains = false;
}
}
if(!contains){
return "";
}
}
return decimalToBinary(hexToDecimal(hexNumber));
}
public static int hexToDecimal(String hexNumber) {
int decimalNumber = 0;
if(hexNumber == null || hexNumber.equals("")) return decimalNumber;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = 16*decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
return decimalNumber;
}
public static String decimalToHex(int decimalNumber) {
if(decimalNumber <= 0) return "";
String hexNumber = "";
while(decimalNumber != 0 ){
hexNumber = HEX.charAt(decimalNumber%16) + hexNumber;
decimalNumber /= 16;
}
return hexNumber;
}
public static int binaryToDecimal(String binaryNumber) {
if (binaryNumber == null || binaryNumber.equals("")){
return 0;
}
double j=0;
for(int i=0;i<binaryNumber.length();i++){
if(binaryNumber.charAt(i)== '1'){
j=j+ Math.pow(2,binaryNumber.length()-1-i);
}
}
return (int) j;
}
public static String decimalToBinary(int decimalNumber) {
String binaryNumber = "";
if (decimalNumber <= 0) {
return binaryNumber;
}
while (decimalNumber != 0) {
binaryNumber = Integer.toString(decimalNumber % 2) + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}