Здравствуйте, помогите пожалуйста с решением. Вроде все работает как надо. А решение не принимает. Пробовал зайти в обсуждения, поймал только дизмораль. Люди решают данную задачу разными способами, которые мы не проходили в темах. Заранее спасибо за потраченное время.
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 ind = "0123456789abcdef";
String[] table = new String[16];
table[0] = "0000";
table[1] = "0001";
table[2] = "0010";
table[3] = "0011";
table[4] = "0100";
table[5] = "0101";
table[6] = "0110";
table[7] = "0111";
table[8] = "1000";
table[9] = "1001";
table[10] = "1010";
table[11] = "1011";
table[12] = "1100";
table[13] = "1101";
table[14] = "1110";
table[15] = "1111";
String result ="";
if (binaryNumber == null) {
return result;
}
if(binaryNumber.length() % 4 != 0){ //начало
for (int i = 0; i < binaryNumber.length() % 4; i++){ //код добавляет 0 до кратности
binaryNumber = "0" + binaryNumber; //
} //конец
}
for (int j = 0; j < binaryNumber.length(); j+=4){ //начало
String nextBinar = ""; //код бегает по строке и записывает
for (int k = 0; k < 4; k++){ //по 4 символа для дальнейшего сравнения
nextBinar = nextBinar + binaryNumber.charAt(j+k); //конец
for (int l = 0; l<16; l++){ //начало
if(nextBinar.equals(table[l])){ // код бегает по массиву и сравнивает 4 числа с 4 числами с массива. далее записывает результат
result = result + ind.charAt(l); //конец
}
}
}
}
return result;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String ind = "0123456789abcdef";
String[] table = new String[16];
table[0] = "0000";
table[1] = "0001";
table[2] = "0010";
table[3] = "0011";
table[4] = "0100";
table[5] = "0101";
table[6] = "0110";
table[7] = "0111";
table[8] = "1000";
table[9] = "1001";
table[10] = "1010";
table[11] = "1011";
table[12] = "1100";
table[13] = "1101";
table[14] = "1110";
table[15] = "1111";
String result ="";
if (hexNumber == null) {
return result;
}
for (int i = 0; i<hexNumber.length(); i++){
for (int j = 0; j<table.length; j++){
if (hexNumber.charAt(i)==(ind.charAt(j))){
result = result + table[j];
}
}
}
return result;
}
}