Всем привет. Особо мудрить при решении этой задачи не стал. Воспользовался методами из решения предыдущих задач. Конвертер работает. Все переводится как должно. Но валидатор этот просто выбешивает, не пропуская решение по условию проверки строки на null. Впредыдущих задачах тоже такое было. В одной нужно было использовать допустим: hexNumber.equals(null) , вместо hexNumber == null. И наоборот... здесь же и тот и этот вариант не работает. Из принципа скипать не хочу. Подскажите пожалуйста какие есть еще варианты???
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static final String HEX = "0123456789abcdef";
public static void main(String[] args) {
String binaryNumber = "101";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9a0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
if (!binaryNumber.matches("[01]+") || binaryNumber.equals(null) ){
return "";
}
char[] array = binaryNumber.toCharArray();
int[] arrayFin = new int [array.length];
int sum = 0;
for (int i = 0; i < array.length-1; i++){
arrayFin[i] = (int)((array[i] - '0') * Math.pow(2, arrayFin.length - i - 1));
sum += arrayFin[i];
}
sum += (array[array.length-1] - '0');
String hexNum = "";
while ( sum != 0){
hexNum = HEX.charAt(sum % 16) + hexNum;
sum = sum/16;
}
return hexNum;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (!hexNumber.matches("[0-9, a-f]+") || hexNumber.equals(null)) {
return "";
}
int decimalNumber = 0;
int sum = 0;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = (int)((HEX.indexOf(hexNumber.charAt(i)) * Math.pow(16, hexNumber.length() - i - 1)));
sum += decimalNumber;
}
String binaryNum = "";
while (sum != 0) {
binaryNum = sum % 2 + binaryNum;
sum = sum/2;
}
return binaryNum;
}
}