Не проходит второе условие ( toBinary) . На null и пустую строку на входе проверил. Так же проверил, что все символы соответствуют хексу...
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) {
return "";
}
if (binaryNumber.equals("")) {
return "";
}
int decimalNumber = 0;
String hexNumber = "";
String HEX = "0123456789abcdef";
for (int i = binaryNumber.length(); i > 0; i--) {
int j = binaryNumber.length() - i;
if (binaryNumber.charAt(i-1) == '1') {
decimalNumber += (int)(Math.pow(2, j));
} else if (binaryNumber.charAt(i - 1) == '0') {
decimalNumber = decimalNumber;
} else {
return "";
}
}
while (decimalNumber > 0) {
hexNumber = HEX.charAt(decimalNumber%16) + hexNumber;
decimalNumber /= 16;
}
hexNumber = hexNumber;
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null) {
return "";
}
if (hexNumber.equals("")) {
return "";
}
String HEX = "0123456789abcdef";
int decimalNumber = 0;
String binaryNumber = "";
for (int i = hexNumber.length(); i > 0; i--) {
int j = hexNumber.length() - i;
boolean fl = false;
for (int k = 0; k < 16; k++) {
if (hexNumber.charAt(i - 1) == HEX.charAt(k)) {
decimalNumber += (int)(k*Math.pow(16, j));
fl = true;
break;
}
}
if (fl == false) {
return "";
}
}
//System.out.println(decimalNumber);
while (decimalNumber != 0) {
binaryNumber = (decimalNumber%2) + binaryNumber;
decimalNumber /= 2;
}
//binaryNumber = binaryNumber + decimalNumber;
return binaryNumber;
}
}