Не понимаю почему не решает, хотя если пытаться подставить пустую строку или добавить символов, то программа обрабатывает все правильно, согласно условию, но первый пункт все равно не принимает.
Нужно, чтобы метод toHex(String) был реализован согласно условию.
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 numB = "";
String foursymbols = "";
if(binaryNumber == null || binaryNumber.equals("") || !binaryNumber.matches("[0,1]+")){
return numB;
}
if(binaryNumber.length()%4 != 0) {
int nulas = binaryNumber.length() / 4;
for (int i = 0; i < nulas; i++) {
binaryNumber = "0" + binaryNumber ;
}
}
for(int i = 0; i < binaryNumber.length(); i++){
foursymbols = foursymbols + binaryNumber.charAt(i);
if(foursymbols.length() == 4){
foursymbols = foursymbols.equals("0000") ? "0" : foursymbols;
foursymbols = foursymbols.equals("0001") ? "1" : foursymbols;
foursymbols = foursymbols.equals("0010") ? "2" : foursymbols;
foursymbols = foursymbols.equals("0011") ? "3" : foursymbols;
foursymbols = foursymbols.equals("0100") ? "4" : foursymbols;
foursymbols = foursymbols.equals("0101") ? "5" : foursymbols;
foursymbols = foursymbols.equals("0110") ? "6" : foursymbols;
foursymbols = foursymbols.equals("0111") ? "7" : foursymbols;
foursymbols = foursymbols.equals("1000") ? "8" : foursymbols;
foursymbols = foursymbols.equals("1001") ? "9" : foursymbols;
foursymbols = foursymbols.equals("1010") ? "a" : foursymbols;
foursymbols = foursymbols.equals("1011") ? "b" : foursymbols;
foursymbols = foursymbols.equals("1100") ? "c" : foursymbols;
foursymbols = foursymbols.equals("1101") ? "d" : foursymbols;
foursymbols = foursymbols.equals("1110") ? "e" : foursymbols;
foursymbols = foursymbols.equals("1111") ? "f" : foursymbols;
numB = numB + foursymbols;
foursymbols = "";
}
}
return numB;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String numH = "";
String frstsmb="";
if(hexNumber == null || hexNumber.equals("")|| !hexNumber.matches("[0-9a-f]+")){
return "";
}
for(int i = 0; i < hexNumber.length();i++){
frstsmb = frstsmb + hexNumber.charAt(i);
frstsmb = frstsmb.equals("0") ? "0000" : frstsmb;
frstsmb = frstsmb.equals("1") ? "0001" : frstsmb;
frstsmb = frstsmb.equals("2") ? "0010" : frstsmb;
frstsmb = frstsmb.equals("3") ? "0011" : frstsmb;
frstsmb = frstsmb.equals("4") ? "0100" : frstsmb;
frstsmb = frstsmb.equals("5") ? "0101" : frstsmb;
frstsmb = frstsmb.equals("6") ? "0110" : frstsmb;
frstsmb = frstsmb.equals("7") ? "0111" : frstsmb;
frstsmb = frstsmb.equals("8") ? "1000" : frstsmb;
frstsmb = frstsmb.equals("9") ? "1001" : frstsmb;
frstsmb = frstsmb.equals("a") ? "1010" : frstsmb;
frstsmb = frstsmb.equals("b") ? "1011" : frstsmb;
frstsmb = frstsmb.equals("c") ? "1100" : frstsmb;
frstsmb = frstsmb.equals("d") ? "1101" : frstsmb;
frstsmb = frstsmb.equals("e") ? "1110" : frstsmb;
frstsmb = frstsmb.equals("f") ? "1111" : frstsmb;
numH = numH + frstsmb;
frstsmb = "";
}
return numH;
}
}