Метод toBinary не проходит условия задачи, кто может подсказать причину? Все перепробовал
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.isEmpty()) {
return "";
}
// Проверяем, что в строке содержатся только символы '0' и '1'
for (int i = 0; i < binaryNumber.length(); i++) {
char c = binaryNumber.charAt(i);
if (c != '0' && c != '1') {
return "";
}
}
int result = toDecimalOld(binaryNumber);
return toHexOld(result);
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
// Проверяем, что в строке содержатся только цифры от '0' до '9' и буквы от 'a' до 'f' (в нижнем регистре)
for (int i = 0; i < hexNumber.length(); i++) {
char c = hexNumber.charAt(i);
if (!Character.isDigit(c) && (c < 'a' || c > 'f')) {
return "";
}
}
int result = toDecimalOldD(hexNumber);
return toBinaryOld(result);
}
public static String toHexOld(int decimalNumber) {
final String HEX = "0123456789abcdef";
String result = "";
if(decimalNumber>0){
int temp = 0;
while(decimalNumber/16!=0){
temp = decimalNumber%16;
decimalNumber /= 16;
if(temp<10){
result+=temp;
}else if(temp>=10 && temp<=15){
result+=HEX.charAt(temp);
}
if(decimalNumber<16){
result+=HEX.charAt(decimalNumber);
}else if(temp==0&&decimalNumber<10){
result+=temp;
}
}
result = new StringBuilder(result).reverse().toString();
return result;
}else return null;
}
public static int toDecimalOldD(String hexNumber) {
final String HEX = "0123456789abcdef";
if(hexNumber!=null && hexNumber!=""){
int result = 0;
for(int i=0; i<hexNumber.length();i++){
if(Character.isDigit(hexNumber.charAt(i))){
result+=(hexNumber.charAt(i)-'0')*((int)(Math.pow(16,hexNumber.length()-i-1)));
}else if(Character.isLetter(hexNumber.charAt(i))){
char temp = hexNumber.charAt(i);
int index = HEX.indexOf(temp);
result+=(index)*((int)(Math.pow(16,hexNumber.length()-i-1)));
}
}
return result;
}else return 0;
}
public static String toBinaryOld(int decimalNumber) {
String result ="";
if(decimalNumber>0){
while(decimalNumber!=0){
result+= decimalNumber%2;
decimalNumber = (int)Math.floor(decimalNumber/2);
}
result = new StringBuilder(result).reverse().toString();
return result;
}else return result;
}
public static int toDecimalOld(String binaryNumber) {
if(binaryNumber!=null || binaryNumber==""){
int result = 0;
int pow = binaryNumber.length()-1;
for(int i=0;i<binaryNumber.length();i++){
int temp = binaryNumber.charAt(i)-'0';
result+=temp*(int)Math.pow(2,binaryNumber.length()-i-1);
}
return result;
}else return 0;
}
}