Нужно, чтобы метод toBinary(String) был реализован согласно условию.
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 || binaryNumber.equals("")) {
return "";
}
for (int i = 0; i < binaryNumber.length(); i++) {
int index = binaryNumber.length() - 1 - i;
int value = Character.getNumericValue(binaryNumber.charAt(index));
if (value != 1 && value != 0) {
return "";
}
}
int count = binaryNumber.length() % 4;
if (count != 0) {
for (int i = count; i < 4; i++) {
binaryNumber = 0 + binaryNumber;
}
}
String temp = "";
String temp1 = "";
String tempFinish = "";
for (int i = 1; i <= binaryNumber.length(); i++) {
int value = Character.getNumericValue(binaryNumber.charAt(i - 1));
temp += value;
if (i % 4 == 0) {
switch (temp) {
case "0000":
temp1 = "0";
break;
case "0001":
temp1 = "1";
break;
case "0010":
temp1 = "2";
break;
case "0011":
temp1 = "3";
break;
case "0100":
temp1 = "4";
break;
case "0101":
temp1 = "5";
break;
case "0110":
temp1 = "6";
break;
case "0111":
temp1 = "7";
break;
case "1000":
temp1 = "8";
break;
case "1001":
temp1 = "9";
break;
case "1010":
temp1 = "a";
break;
case "1011":
temp1 = "b";
break;
case "1100":
temp1 = "c";
break;
case "1101":
temp1 = "d";
break;
case "1110":
temp1 = "e";
break;
case "1111":
temp1 = "f";
break;
}
tempFinish += temp1;
temp = "";
}
}
return tempFinish;
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals("")) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
String hex = "0123456789abcdef";
if (hex.indexOf(hexNumber.charAt(i)) == -1) {
return "";
}
}
String temp = "";
String tempFinish = "";
for (int i = 0; i < hexNumber.length(); i++) {
String value = "" + hexNumber.charAt(i);
switch (value) {
case "0":
temp = "0000";
break;
case "1":
temp = "0001";
break;
case "2":
temp = "0010";
break;
case "3":
temp = "0011";
break;
case "4":
temp = "0100";
break;
case "5":
temp = "0101";
break;
case "6":
temp = "0110";
break;
case "7":
temp = "0110";
break;
case "8":
temp = "1000";
break;
case "9":
temp = "1001";
break;
case "a":
temp = "1010";
break;
case "b":
temp = "1011";
break;
case "c":
temp = "1100";
break;
case "d":
temp = "1101";
break;
case "e":
temp = "1110";
break;
case "f":
temp = "1111";
break;
}
tempFinish += temp;
temp = "";
}
return tempFinish;
}
}