Если количество тетрад в исходных данных = 1. например 1101 то все работает, но если меняем количество тетрад на больше чем 1 например 11111111 то выдает неверный ответ. Отдельно проверял правильность "приклеивания" недостающих 0 с помощью цикла while, все работает корректно.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = "111001";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
boolean a = true;
for (int i = 0; i < binaryNumber.length(); i ++){
if ((binaryNumber.charAt(i) == '0') | (binaryNumber.charAt(i) == '1')) a=true;
else
{
a = false;
break;
}
}
if ((binaryNumber != "") & (a)) {
while(binaryNumber.length()%4!=0) {
binaryNumber = "0"+binaryNumber;
}
int count = binaryNumber.length()/4;
String shes = "";
for (int i =0, u = 1; i < count; i++, u = u *2) {
if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0000")) shes = "0" + shes ;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0001")) shes = "1" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0010")) shes = "2" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0011")) shes = "3" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0100")) shes = "4" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0101")) shes = "5" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0110")) shes = "6" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("0111")) shes = "7" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1000")) shes = "8" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1001")) shes = "9" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1010")) shes = "a" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1011")) shes = "b" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1100")) shes = "c" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1101")) shes = "d" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1110")) shes = "e" + shes;
else if (binaryNumber.substring(binaryNumber.length()-4*u, 4).equals("1111")) shes = "f" + shes;
}
return shes;
}
else return "5";
//stringName.substring(0, 7)
//напишите тут ваш код
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
return null;
}
}