всем доброй ночи!
решал задачу согласно условиям
запрещенные методы не применял
вывод в консоль правильный
просит проверить на ввод пустой строки при значении входного параметра null, все работает
в правильном решении нет проверки на неподходящие символы и на пустую строку
делать через if equals не стал
переводил из 2 в 10 потом в 16 и наоборот
подскажите, что не так?
P.s.
с проверкой на пустую строку ||(или) null тот же результат
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = null;
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
String hexx = "0123456789abcdef";
String regex = "[0-1]+";
String hex = "";
if( binaryNumber==null){
return hex;
}
else if(binaryNumber.matches(regex)){
int i = 0;
while ( i<binaryNumber.length()-1 ){
String bin = (String) binaryNumber.subSequence(i,i+4);
int dec = 0;
for(int j = 0; j<bin.length();j++){
int b=Character.getNumericValue(bin.charAt(bin.length()-j-1));
dec =(int)(dec + (b%10)*Math.pow(2,j));
b=b/10;
}
if(dec == 0){
hex = hex + '0';
}
else {
while(dec != 0) {
hex = hex + hexx.charAt(dec%16);
dec = dec/16;
}
}
i=i+4;
}
}
return hex;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String regex = "[0123456789abcdef]+";
String hexx = "0123456789abcdef";
int dec = 0;
String bin = "";
if(hexNumber==null){
return bin;
}
else if (hexNumber.matches(regex)){
for(int i =0; i<hexNumber.length(); i++){
dec = dec * 16 + hexx.indexOf(hexNumber.charAt(i));
}
while(dec!=0){
bin = dec%2 + bin;
dec=dec/2;
}
}
else{
return bin;
}
return bin;
} //2304+208
}