Проверила на любые входящие, работает согласно условиям, однако не проходит валидацию метод toBinary. Пробовала и такой вариант, тоже не верно:
public static String toBinary(String hexNumber) {
String binaryNumber = "";
if (hexNumber == null) {
return binaryNumber;
}
int decimalNumber = 0;
for (int i = 0; i < hexNumber.length(); i++) {
if (hexNumber.charAt(i) >= '0' & hexNumber.charAt(i) <= '9' | hexNumber.charAt(i) >= 'a' & hexNumber.charAt(i) <= 'f') {
int charIndex = hex.indexOf(hexNumber.charAt(i));
decimalNumber = 16 * decimalNumber + charIndex;
} else {
return binaryNumber;
}
}
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}
package com.javarush.task.pro.task09.task0908;
/*
Двоично-шестнадцатеричный конвертер
*/
import java.util.Objects;
public class Solution {
private static final String hex = "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) {
String hexNumber = "";
if (binaryNumber == null) {
return hexNumber;
}
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
int value = Character.getNumericValue(binaryNumber.charAt(binaryNumber.length() - 1 - i));
if (Objects.equals(value, 0) | Objects.equals(value, 1)) {
decimalNumber = (int) (decimalNumber + value * Math.pow(2, i));
} else {
return hexNumber;
}
}
while (decimalNumber != 0) {
hexNumber = hex.charAt(decimalNumber % 16) + hexNumber;
decimalNumber = decimalNumber / 16;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String binaryNumber = "";
if (hexNumber == null) {
return binaryNumber;
}
for (int i = 0; i < hexNumber.length(); i++) {
if (!(hexNumber.charAt(i) >= '0' & hexNumber.charAt(i) <= '9' | hexNumber.charAt(i) >= 'a' & hexNumber.charAt(i) <= 'f')) {
return "";
} else {
int decimalNumber = 0;
String binaryValue = "";
int charIndex = hex.indexOf(hexNumber.charAt(i));
decimalNumber = 16 * decimalNumber + charIndex;
if (decimalNumber == 0) {
binaryValue = "0000";
} else {
while (decimalNumber != 0) {
binaryValue = decimalNumber % 2 + binaryValue;
decimalNumber = decimalNumber / 2;
}
}
binaryNumber += binaryValue;
}
}
return binaryNumber;
}
}