Убедись, что метод toBinary(String) возвращает пустую строку, если входящий параметр содержит любой символ, кроме цифр от 0 до 9 или латинскую букву от a до f (в нижнем регистре).
Проверка ввода "не тех символов": "default -> rezultat.setLength(0);" точно так же как в методе toHex(String).
Но по условиям не прохожу.
Есть идеи как исправить "проверку ввода"?
И почему метод toHex проходит?
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) {
String hexNumber = "";
if (binaryNumber == null) {
return hexNumber;
}
StringBuilder builder = new StringBuilder();
StringBuilder rezultat = new StringBuilder();
if (binaryNumber.length() % 4 == 1) {
builder.append("000").append(binaryNumber);
} else if (binaryNumber.length() % 4 == 2) {
builder.append("00").append(binaryNumber);
} else if (binaryNumber.length() % 4 == 3) {
builder.append("0").append(binaryNumber);
} else {
builder.append(binaryNumber);
}
for (int i = 0; i < binaryNumber.length(); i = i + 4) {
String si = builder.substring(i, i + 4);
switch (si) {
case "0000" -> rezultat.append("0");
case "0001" -> rezultat.append("1");
case "0010" -> rezultat.append("2");
case "0011" -> rezultat.append("3");
case "0100" -> rezultat.append("4");
case "0101" -> rezultat.append("5");
case "0110" -> rezultat.append("6");
case "0111" -> rezultat.append("7");
case "1000" -> rezultat.append("8");
case "1001" -> rezultat.append("9");
case "1010" -> rezultat.append("a");
case "1011" -> rezultat.append("b");
case "1100" -> rezultat.append("c");
case "1101" -> rezultat.append("d");
case "1110" -> rezultat.append("e");
case "1111" -> rezultat.append("f");
default -> rezultat.setLength(0);
}
}
return rezultat.toString();
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber = "";
if (hexNumber == null) {
return binaryNumber;
}
char[] charArray = hexNumber.toCharArray();
StringBuilder rezultat = new StringBuilder();
for (int i = 0; i < hexNumber.length(); i++) {
switch (charArray[i]) {
case '0' -> rezultat.append("0000");
case '1' -> rezultat.append("0001");
case '2' -> rezultat.append("0010");
case '3' -> rezultat.append("0011");
case '4' -> rezultat.append("0100");
case '5' -> rezultat.append("0101");
case '6' -> rezultat.append("0110");
case '7' -> rezultat.append("0111");
case '8' -> rezultat.append("1000");
case '9' -> rezultat.append("1001");
case 'a' -> rezultat.append("1010");
case 'b' -> rezultat.append("1011");
case 'c' -> rezultat.append("1100");
case 'd' -> rezultat.append("1101");
case 'e' -> rezultat.append("1110");
case 'f' -> rezultat.append("1111");
default -> rezultat.append("");
}
}
return rezultat.toString();
}
}