Please help, I don't know where the problem is :(.
package en.codegym.task.pro.task09.task0908;
/*
Binary to hexadecimal converter
*/
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) {
String binaryNumber = "100111010000";
System.out.println("Binary number " + binaryNumber + " is equal to hexadecimal number " + toHex(binaryNumber));
String hexNumber = "1";
System.out.println("Hexadecimal number " + hexNumber + " is equal to binary number " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
String start = "0";
String finalString = "";
int decimalNumberOf = 0;
if (binaryNumber == null || binaryNumber.length() == 0) {
return "";
}
char[] array = binaryNumber.toCharArray();
for (int i = 0; i < array.length; i++) {
if (array[i] != '0' && array[i] != '1') {
return "";
}
}
for (int i = 0; i < binaryNumber.length(); i++) {
if (binaryNumber.length() % 4 == 0) {
break;
} else {
binaryNumber = start + binaryNumber;
}
}
while (binaryNumber.length() > 0) {
String binaryfours = binaryNumber.substring(0, 4);
for (int i = 0; i < binaryfours.length(); i++) {
int characterAt = Character.getNumericValue(binaryfours.charAt(binaryfours.length() - 1 - i));
int power2 = ((int) Math.pow(2, i));
decimalNumberOf = (characterAt * power2) + decimalNumberOf;
}
String addDecimalNumberOf = (decimalNumberOf >= 0 && decimalNumberOf <= 9) ? "" + decimalNumberOf :
(decimalNumberOf == 10) ? "a" :
(decimalNumberOf == 11) ? "b" :
(decimalNumberOf == 12) ? "c" :
(decimalNumberOf == 13) ? "d" :
(decimalNumberOf == 14) ? "e" : "f";
finalString += addDecimalNumberOf;
binaryNumber = binaryNumber.replace(binaryfours, "");
decimalNumberOf = 0;
}
return finalString;
}
public static String toBinary(String hexNumber) {
String partialBinary = "";
String binaryNumberOf = "";
if ((hexNumber == null || hexNumber.length() == 0)) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
partialBinary = (hexNumber.charAt(i) == '0') ? "0000" :
(hexNumber.charAt(i) == '1') ? "0001" :
(hexNumber.charAt(i) == '2') ? "0010" :
(hexNumber.charAt(i) == '3') ? "0011" :
(hexNumber.charAt(i) == '4') ? "0100" :
(hexNumber.charAt(i) == '5') ? "0101" :
(hexNumber.charAt(i) == '6') ? "0110" :
(hexNumber.charAt(i) == '7') ? "0111" :
(hexNumber.charAt(i) == '8') ? "1000" :
(hexNumber.charAt(i) == '9') ? "1001" :
(hexNumber.charAt(i) == 'a') ? "1010" :
(hexNumber.charAt(i) == 'b') ? "1011" :
(hexNumber.charAt(i) == 'c') ? "1100" :
(hexNumber.charAt(i) == 'd') ? "1101" :
(hexNumber.charAt(i) == 'e') ? "1110" :
(hexNumber.charAt(i) == 'f') ? "1111" : "exit";
if (partialBinary.equals("exit")) {
return "";
}
binaryNumberOf += partialBinary;
binaryNumberOf = binaryNumberOf.replaceFirst("^0{0,3}", "");
}
return binaryNumberOf;
}
}