Друзья, подскажите, почему валидатор выдает сообщение: "Нужно, чтобы метод toHex(String) был реализован согласно условию." ?
У меня все исправно работает...
P.S. просьба за громоздкий код и кучу переменных строго не судить))
package com.javarush.task.pro.task09.task0908;
import java.util.HashMap;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static String bin = "";
public static String bin2 = "";
public static String bin3 = "";
public static String hex = "0123456789abcdef";
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("") || !binaryNumber.matches("[0-1]+")) {
return "";
}
else {
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
for (int i = binaryNumber.length() - 1; i >= 0; i--) {
bin = bin + binaryNumber.charAt(i);
}
int x = 0;
int g = 0;
for (int i = 0; i < bin.length(); i++) {
int a = Character.getNumericValue(bin.charAt(i));
x = (int) (x + a * Math.pow(2, g));
g = g + 1;
if ((i + 1) % 4 == 0) {
g = 0;
bin2 = bin2 + hex.charAt(x);
x = 0;
}
}
for (int i = bin2.length() - 1; i >= 0; i--) {
bin3 = bin3 + bin2.charAt(i);
}
while (bin3.length() != 1 && bin3.substring(0,1).equals("0")) {bin3 = bin3.substring(1);}
}
return bin3;
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.equals("") || !(hexNumber.matches("[0-9a-f]+"))) {return "";}
else {
String a = "";
String n = "";
HashMap<Integer, String> firstMap = new HashMap<Integer, String>();
firstMap.put(0, "0000");
firstMap.put(1, "0001");
firstMap.put(2, "0010");
firstMap.put(3, "0011");
firstMap.put(4, "0100");
firstMap.put(5, "0101");
firstMap.put(6, "0110");
firstMap.put(7, "0111");
firstMap.put(8, "1000");
firstMap.put(9, "1001");
firstMap.put(10, "1010");
firstMap.put(11, "1011");
firstMap.put(12, "1100");
firstMap.put(13, "1101");
firstMap.put(14, "1110");
firstMap.put(15, "1111");
for (int i = 0; i < hexNumber.length(); i++) {
a = hexNumber.substring(i, i + 1);
for (int k = 0; k < hex.length(); k++) {
if (a.equals(hex.substring(k, k + 1))) {
n = n + firstMap.get(k);
}
}
}
return n;
}
}
}