Проверка задачи не защитывает на втором пункте со словами - "Переконайся, що метод toBinary(String) повертає порожній рядок, якщо вхідний параметр містить будь-який символ, окрім цифр від 0 до 9 і малих латинських літер від a до f (у нижньому регістрі)."
Я посмотрел правильное решение, там подругому решена функция toBinary(). Моё решение правильное, но нет проверки символы 0-9 и a-f.
Можно ли это как-то реализовать в моём решении, или моё решение полностью неверно?
package ua.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двійково-шістнадцятковий конвертер
*/
public class Solution {
public static final 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) {
String hexNumber = "";
if (binaryNumber == null) {
return hexNumber;
}
if(binaryNumber.length()%4 == 1){
binaryNumber = "000" + binaryNumber;
} else if(binaryNumber.length()%4 == 2){
binaryNumber = "00" + binaryNumber;
}else if(binaryNumber.length()%4 == 3){
binaryNumber = "0" + binaryNumber;
}
String[] binarySet = new String[binaryNumber.length()/4];
for (int i = 0; i < binaryNumber.length(); i = i+4) {
binarySet[i/4] = binaryNumber.substring(i, i+4);
}
for (int j = 0; j < binarySet.length; j++) {
int decimalNumber = 0;
for (int i = 0; i < binarySet[j].length(); i++) {
int index = binarySet[j].length() - 1 - i;
int value = Character.getNumericValue(binarySet[j].charAt(index));
decimalNumber += value * Math.pow(2, i);
}
if(decimalNumber == 0){
hexNumber = hexNumber + 0;
}else {
while(decimalNumber != 0) {
hexNumber = hexNumber + HEX.charAt(decimalNumber%16);
decimalNumber = decimalNumber/16;
}
}
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишіть тут ваш код
String binaryNumber = "";
if(hexNumber == null || (!hexNumber.contains("0") && !hexNumber.contains("1") && !hexNumber.contains("2")
&& !hexNumber.contains("3") && !hexNumber.contains("4") && !hexNumber.contains("5") && !hexNumber.contains("6")
&& !hexNumber.contains("7")&& !hexNumber.contains("8") && !hexNumber.contains("9") && !hexNumber.contains("a")
&& !hexNumber.contains("b") && !hexNumber.contains("c") && !hexNumber.contains("d") && !hexNumber.contains("e")
&& !hexNumber.contains("f")) ) return binaryNumber;
int decimalNumber = 0;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = 16 * decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
while(decimalNumber != 0) {
binaryNumber = decimalNumber%2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}