Время проверки превышает допустимое и.....ничего. В консоль выводит обе строки но без результатов методов toBinary и toHex. Добавление недостающих нулей, при делении двоичного числа с остатком я вынесла в отдельный метод. Это нормально, можно так? Решение готовое посмотрела, но таким образом сама бы я не написала, temp.append() например незнаю че такое.
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) {
String hex = "";
int deci = 0;
String HEX = "0123456789abcdef";
if (binaryNumber == null || binaryNumber.equals("") || Pattern.matches("[0-1]+", binaryNumber))
return hex;
if (binaryNumber.length() % 4 != 0)
binaryNumber = binary2(binaryNumber);
for (int i = 0; i < binaryNumber.length(); i++) {
int index = binaryNumber.length() - 1 - i;
int value = Character.getNumericValue(binaryNumber.charAt(index));
deci = (int) (deci + value * Math.pow(2, i));
}
while (deci != 0) {
int index = deci % 16;
char value = HEX.charAt(index);
hex = value + hex;
deci = deci/16;
}
return hex;
}
public static String binary2(String binaryNumber) {
String binary2 = "";
while (binaryNumber.length() % 4 !=0) {
binary2 = "0" + binaryNumber;
}
return binary2;
}
public static String toBinary(String hexNumber) {
String binaryfinish = "";
if (hexNumber == null || hexNumber.equals("") || Pattern.matches("[0-9[a-f]]+", hexNumber))
return binaryfinish;
for (int i = 0; i < hexNumber.length(); i++) {
String value = "" + hexNumber.charAt(i);
switch (value) {
case "0":
value = "0000";
break;
case "1":
value = "0001";
break;
case "2":
value = "0010";
break;
case "3":
value = "0011";
break;
case "4":
value = "0100";
break;
case "5":
value = "0101";
break;
case "6":
value = "0110";
break;
case "7":
value = "0111";
break;
case "8":
value = "1000";
break;
case "9":
value = "1001";
break;
case "a":
value = "1010";
break;
case "b":
value = "1011";
break;
case "c":
value = "1100";
break;
case "d":
value = "1101";
break;
case "e":
value = "1110";
break;
case "f":
value = "1111";
break;
}
binaryfinish = binaryfinish + value;
}
return binaryfinish;
}
}