Ответ от валидатора:
"Задача не прошла тестирование
Убедись, что в методе toHex(String) не используется метод Integer.parseInt(String, int).
Убедись, что в методе toHex(String) не используется метод Integer.toHexString(int).
Убедись, что в методе toHex(String) не используется метод Integer.parseInt(String, int).
Убедись, что в методе toHex(String) не используется метод Integer.toString(int, int).
Убедись, что в методе toHex(String) не создается новый объект типа BigInteger.
Убедись, что в методе toHex(String) не создается новый объект типа BigDecimal."
он издевается или это я уже зарешалась? ... : /
2 недели с ней вожусь... прошла весь 9й уровень и перелопатила кучу доп материала, вернулась, вроде более-менее разобралась,
решение выдает :
"Двоичное число 100111010000 равно шестнадцатеричному числу 9d0
Шестнадцатеричное число 9d0 равно двоичному числу 100111010000"
но че не так, блин, посмотрите свежим взглядом, плиз
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static final String[] arrayHex = new String[]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e"};
public static final String[] arrayBinary = new String[] {"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};
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 hexNumber = "";
if (binaryNumber == null || binaryNumber.equals("")) { //Если входящий параметр — пустая строка или null, то метод возвращают пустую строку.
return "";
} else { //Если входящий параметр метода toHex(String) содержит любой символ, кроме 0 или 1, то метод возвращает пустую строку.
boolean isBinary = binaryNumber.matches("^[0-1]+$");
if (!isBinary) {
return "";
} else { //Проверяем длину строки, полученной входящим параметром. Она должна быть кратна 4. Если это не так, то добавляем нужное количество 0 в начало строки.
while (binaryNumber.length() % 4 != 0) {
binaryNumber = "0" + binaryNumber;
}
//Берем каждые четыре символа (бита) и проверяем, какому символу шестнадцатеричной кодировки он соответствует.
for (int n = 0; (n < binaryNumber.length()); n += 4) { // обрабатываем по 4 цифры двоичного числа
String s = binaryNumber.substring(0 + n, 4 + n);
for (int i = 0; i < arrayBinary.length; i++) // ищем соответствия в массиве двоичных кодов
if (s.equals(arrayBinary[i])) {
hexNumber = hexNumber + arrayHex[i]; // при совпадении -записываем значение, цикл прерываем.
break;
}
}
return hexNumber;
}
}
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber= "";
if (hexNumber == null || hexNumber.equals("")) { //Если входящий параметр — пустая строка или null, то метод возвращают пустую строку.
return "";
} else { //Если входящий параметр метода toBinary(String) содержит любой символ, кроме цифр от 0 до 9 или латинскую букву от a до f (в нижнем регистре), то метод возвращает пустую строку.
boolean isBinary = hexNumber.matches("^[0-9a-f]+$"); // опрелеляем диапазон символов 0-9 и a-f
if (!isBinary) {
return "";
}
} for (int i = 0; i < hexNumber.length(); i++) {
String s = hexNumber.substring(0 + i, 1 + i);
for (int j = 0; j < arrayHex.length; j++)
if (s.equals(arrayHex[j])) {
binaryNumber = binaryNumber + arrayBinary[j];
break;
}
}
return binaryNumber;
}
}