Вот что пишет валидатор:
Убедись, что метод toHex(String) возвращает пустую строку, если на вход получает null.
Убедись, что метод toBinary(String) возвращает пустую строку, если на вход получает null.
Но у меня есть проверки на null в обоих методах на 18 и 51 строках соответственно, что за бред?
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) {
Pattern pattern = Pattern.compile("^[01]+$");
if (binaryNumber.isEmpty() || binaryNumber == null || !pattern.matcher(binaryNumber).matches()) return "";
String solution = "";
int number = binaryNumber.length() % 4;
if (number > 0) {
for (int i = 0; i < number; i++) {
binaryNumber = 0 + binaryNumber;
}
}
for (int i = 0; i < binaryNumber.length(); i += 4) {
String part = binaryNumber.substring(i, i + 4);
if (part.equals("0000")) part = "0";
else if (part.equals("0001")) part = "1";
else if (part.equals("0010")) part = "2";
else if (part.equals("0011")) part = "3";
else if (part.equals("0100")) part = "4";
else if (part.equals("0101")) part = "5";
else if (part.equals("0110")) part = "6";
else if (part.equals("0111")) part = "7";
else if (part.equals("1000")) part = "8";
else if (part.equals("1001")) part = "9";
else if (part.equals("1010")) part = "a";
else if (part.equals("1011")) part = "b";
else if (part.equals("1100")) part = "c";
else if (part.equals("1101")) part = "d";
else if (part.equals("1110")) part = "e";
else if (part.equals("1111")) part = "f";
solution += part;
}
return solution;
}
public static String toBinary(String hexnumber) {
Pattern pattern = Pattern.compile("^[09][af]+$");
if (hexnumber.isEmpty() || hexnumber == null || pattern.matcher(hexnumber).matches()) return "";
String solution = "";
for (int i = 0; i < hexnumber.length(); i++) {
String part = "" + hexnumber.charAt(i);
if (part.equals("0")) part = "0000";
else if (part.equals("1")) part = "0001";
else if (part.equals("2")) part = "0010";
else if (part.equals("3")) part = "0011";
else if (part.equals("4")) part = "0100";
else if (part.equals("5")) part = "0101";
else if (part.equals("6")) part = "0110";
else if (part.equals("7")) part = "0111";
else if (part.equals("8")) part = "1000";
else if (part.equals("9")) part = "1001";
else if (part.equals("a")) part = "1010";
else if (part.equals("b")) part = "1011";
else if (part.equals("c")) part = "1100";
else if (part.equals("d")) part = "1101";
else if (part.equals("e")) part = "1110";
else if (part.equals("f")) part = "1111";
solution += part;
}
return solution;
}
}