Не понимаю, что не так с проверками условий, но валидация не проходит.
package com.javarush.task.pro.task09.task0908;
import java.util.*;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = "100111010000";
//String binaryNumber = "";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
//String hexNumber = "";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
if (binaryNumber == null || !binaryNumber.matches("[0-1]+")){
return "";
}
else {
int decimalNumber = 0;
String hexNumber = "";
final String HEX = "0123456789abcdef";
if (binaryNumber.length() % 4 != 0){
int x = binaryNumber.length() % 4;
for (int i = 0; i < x; i++){
binaryNumber = "0".concat(binaryNumber);
}
}
for (int i = 0; i < binaryNumber.length(); i++) {
decimalNumber += Integer.parseInt(String.valueOf(binaryNumber.charAt(i))) * (int) Math.pow(2, (binaryNumber.length() - 1 - i));
}
while (decimalNumber != 0){
hexNumber = String.valueOf(HEX.charAt(decimalNumber % 16)) + hexNumber;
decimalNumber /= 16;
}
return hexNumber;
}
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null || !hexNumber.matches("[0-9a-f]+")){
return "";
}
else {
final String HEX = "0123456789abcdef";
int decimalNumber = 0;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = 16 * decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
ArrayList<String> binaryNumArray = new ArrayList<>();
String binarylNumStr = "";
while (decimalNumber != 0){
int x = decimalNumber % 2;
decimalNumber /= 2;
binaryNumArray.add(String.valueOf(x));
}
for (int i = binaryNumArray.size() - 1; i >= 0; i--){
binarylNumStr += String.valueOf(binaryNumArray.get(i));
}
return binarylNumStr;
}
}
}