Не принимает решение. Можно конечно тупо скопировать готовое решение, но хочется понять причины отказа. Вроде мое решение намного проще, чем готовое. 55 строчек против 128 в оригинальном. Все работает отлично.
Не выполнены все требования задачи
Нужно, чтобы метод toBinary(String) был реализован согласно условию.
х.з. какие требования не выполнены.
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static char[] HEX = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
public static String StrHEX = "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) {
//напишите тут ваш код
if (binaryNumber == null) return "";
char CH;
int i, Pos = 0, Summa = 0, Cnt = binaryNumber.length();
String Result="";
for (i=Cnt-1;i>=0;i--) {
CH = binaryNumber.charAt(i);
if (CH != '1' & CH != '0') return "";
if (CH == '1') Summa += (1<<Pos);
Pos++;
if (Pos < 4 & i > 0) continue; else Pos = 0;
Result= HEX[Summa] + Result;
Summa = 0;
}
return Result;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == null) return "";
String Result = "";
int i, Stac, Pos, Cnt = hexNumber.length();
for (i=Cnt-1;i>=0;i--) {
Pos = StrHEX.indexOf(hexNumber.charAt(i)); if (Pos == -1) return "";
if (Pos == 0) Result = "0000" + Result;
while (Pos != 0) {
Stac = Pos%2;
Result = Stac + Result;
Pos = Pos/2;
}
}
return Result;
}
}