Задача выполнена, но метод toHex(String binaryNumber) не прошел тестирование. Почему?
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 result = "";
if(binaryNumber == null || binaryNumber.equals("")){
return result;
}
char[] arr = binaryNumber.toCharArray();
for(int i=0; i<arr.length; i++){
if(arr[i]!='0' && arr[i]!='1') {
return result;
}
}
for(int i=0; i<=binaryNumber.length()%4; i++){
binaryNumber = '0' + binaryNumber;
}
StringBuilder strBld = new StringBuilder();
for (int i = 0; i < binaryNumber.length(); i += 4) {
String substring = binaryNumber.substring(i, i + 4);
String element;
if (substring.equals("0001")) {
element = "1";
} else if (substring.equals("0010")) {
element = "2";
} else if (substring.equals("0011")) {
element = "3";
} else if (substring.equals("0100")) {
element = "4";
} else if (substring.equals("0101")) {
element = "5";
} else if (substring.equals("0110")) {
element = "6";
} else if (substring.equals("0111")) {
element = "7";
} else if (substring.equals("1000")) {
element = "8";
} else if (substring.equals("1001")) {
element = "9";
} else if (substring.equals("1010")) {
element = "a";
} else if (substring.equals("1011")) {
element = "b";
} else if (substring.equals("1100")) {
element = "c";
} else if (substring.equals("1101")) {
element = "d";
} else if (substring.equals("1110")) {
element = "e";
} else if (substring.equals("1111")) {
element = "f";
} else {
element = "0";
}
strBld.append(element);
}
return strBld.toString();
}
public static String toBinary(String hexNumber) {
String result = "";
if(hexNumber == null || hexNumber.equals("")){
return result;
}
String HEX = "0123456789abcdf";
char[] arr = hexNumber.toCharArray();
for(int i=0; i<arr.length; i++){
if(!HEX.contains(""+arr[i])) {
return result;
}
}
StringBuilder strBld = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
String element;
if (hexNumber.charAt(i) == '1') {
element = "0001";
} else if (hexNumber.charAt(i) == '2') {
element = "0010";
} else if (hexNumber.charAt(i) == '3') {
element = "0011";
} else if (hexNumber.charAt(i) == '4') {
element = "0100";
} else if (hexNumber.charAt(i) == '5') {
element = "0101";
} else if (hexNumber.charAt(i) == '6') {
element = "0110";
} else if (hexNumber.charAt(i) == '7') {
element = "0111";
} else if (hexNumber.charAt(i) == '8') {
element = "1000";
} else if (hexNumber.charAt(i) == '9') {
element = "1001";
} else if (hexNumber.charAt(i) == 'a') {
element = "1010";
} else if (hexNumber.charAt(i) == 'b') {
element = "1011";
} else if (hexNumber.charAt(i) == 'c') {
element = "1100";
} else if (hexNumber.charAt(i) == 'd') {
element = "1101";
} else if (hexNumber.charAt(i) == 'e') {
element = "1110";
} else if (hexNumber.charAt(i) == 'f') {
element = "1111";
} else {
element = "0000";
}
strBld.append(element);
}
return strBld.toString();
}
}