Добрый вечер.
Принципиально не смотрел готовое решение. Код может и с костылями получился и слишком громоздкий, но условия задачи строго выдержал. Переводит верно ( я сравнивал с онлайн калькулятором).
Задача не проходит.
Из рекомендаций выходит:
"Убедись, что метод toHex(String) возвращает пустую строку, если на вход получает пустую строку.
Убедись, что метод toBinary(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) {
//напишите тут ваш код
if(binaryNumber == null || binaryNumber == ""){
return null;
}
for(int i = 0; i < binaryNumber.length(); i++){
int index = binaryNumber.length() - 1 - i;
Character.getNumericValue(binaryNumber.charAt(index));
if(Character.getNumericValue(binaryNumber.charAt(index)) != 0 && Character.getNumericValue(binaryNumber.charAt(index)) != 1){
return null;
}
}
int length = binaryNumber.length();
while(length % 4 != 0){
binaryNumber = "0" + binaryNumber;
length++;
}
String hexNumber = "";
String forSymbols = null;
for(int i = 0; i < length; i += 4){
if(binaryNumber.substring(i, i+4).equals("0000")){
forSymbols = "0";
}
if(binaryNumber.substring(i, i+4).equals("0001")){
forSymbols = "1";
}
if(binaryNumber.substring(i, i+4).equals("0010")){
forSymbols = "2";
}
if(binaryNumber.substring(i, i+4).equals("0011")){
forSymbols = "3";
}
if(binaryNumber.substring(i, i+4).equals("0100")){
forSymbols = "4";
}
if(binaryNumber.substring(i, i+4).equals("0101")){
forSymbols = "5";
}
if(binaryNumber.substring(i, i+4).equals("0110")){
forSymbols = "6";
}
if(binaryNumber.substring(i, i+4).equals("0111")){
forSymbols = "7";
}
if(binaryNumber.substring(i, i+4).equals("1000")){
forSymbols = "8";
}
if(binaryNumber.substring(i, i+4).equals("1001")){
forSymbols = "9";
}
if(binaryNumber.substring(i, i+4).equals("1010")){
forSymbols = "a";
}
if(binaryNumber.substring(i, i+4).equals("1011")){
forSymbols = "b";
}
if(binaryNumber.substring(i, i+4).equals("1100")){
forSymbols = "c";
}
if(binaryNumber.substring(i, i+4).equals("1101")){
forSymbols = "d";
}
if(binaryNumber.substring(i, i+4).equals("1110")){
forSymbols = "e";
}
if(binaryNumber.substring(i, i+4).equals("1111")){
forSymbols = "f";
}
hexNumber = hexNumber + forSymbols;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if(hexNumber == null||hexNumber == ""){
return null;
}
char proverka;
for(int i = 0; i < hexNumber.length(); i++){
proverka = hexNumber.charAt(i);
if(proverka != '0' && proverka != '1' && proverka != '2' && proverka != '3' && proverka != '4' && proverka != '5'
&& proverka != '6' && proverka != '7' && proverka != '8' && proverka != '9' && proverka != 'a' && proverka != 'b' && proverka != 'c'
&& proverka != 'd' && proverka != 'f' && proverka != 'e'){
return null; }
}
String binary = "";
String oneSymbol = null;
for(int j = 0; j < hexNumber.length(); j++){
if(hexNumber.substring(j, j+1).equals("0")){
oneSymbol = "0000";
}
if(hexNumber.substring(j, j+1).equals("1")){
oneSymbol = "0001";
}
if(hexNumber.substring(j, j+1).equals("2")){
oneSymbol = "0010";
}
if(hexNumber.substring(j, j+1).equals("3")){
oneSymbol = "0011";
}
if(hexNumber.substring(j, j+1).equals("4")){
oneSymbol = "0100";
}
if(hexNumber.substring(j, j+1).equals("5")){
oneSymbol = "0101";
}
if(hexNumber.substring(j, j+1).equals("6")){
oneSymbol = "0110";
}
if(hexNumber.substring(j, j+1).equals("7")){
oneSymbol = "0111";
}
if(hexNumber.substring(j, j+1).equals("8")){
oneSymbol = "1000";
}
if(hexNumber.substring(j, j+1).equals("9")){
oneSymbol = "1001";
}
if(hexNumber.substring(j, j+1).equals("a")){
oneSymbol = "1010";
}
if(hexNumber.substring(j, j+1).equals("b")){
oneSymbol = "1011";
}
if(hexNumber.substring(j, j+1).equals("c")){
oneSymbol = "1100";
}
if(hexNumber.substring(j, j+1).equals("d")){
oneSymbol = "1101";
}
if(hexNumber.substring(j, j+1).equals("e")){
oneSymbol = "1110";
}
if(hexNumber.substring(j, j+1).equals("f")){
oneSymbol = "1111";
}
binary = binary + oneSymbol;
}
return binary;
}
}