Привет
Я конечно понимаю, что решение не оптимальное, немного "читерское": я просто взял методы, которые написал в предыдущих заданиях и вызвал их для решения текущей задачи
Но почему второе условие не проходит до сих пор загадка. На вход подавал разные значения - все работает...
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
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 int toDecimal(String binaryNumber) {
if ((binaryNumber == null) || (binaryNumber.equals(""))) {
return 0;
}
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
decimalNumber = decimalNumber + Character.getNumericValue(binaryNumber.charAt(binaryNumber.length() - i - 1)) * (int)Math.pow(2,i);
}
return decimalNumber;
}
public static String decimalToHex(int decimalNumber) {
if (decimalNumber <= 0 ) {
return "";
}
String hex ="";
while(decimalNumber !=0) {
hex = HEX.charAt(decimalNumber%16) + hex;
decimalNumber = decimalNumber / 16;
}
return hex;
}
public static String toHex(String binaryNumber) {
return (binaryNumber == "" || binaryNumber == null) ? "" : decimalToHex(toDecimal(binaryNumber));
}
public static int toDecimalFromHex(String hexNumber) {
if ((hexNumber == null) || (hexNumber.equals(""))) {
return 0;
}
int decimal = 0;
for (int i = 0; i < hexNumber.length(); i++) {
decimal = 16 * decimal + HEX.indexOf(hexNumber.charAt(i));
}
return decimal;
}
public static String decimalToBinary(int decimalNumber) {
if (decimalNumber <= 0) {
return "";
}
String binary = "";
while(decimalNumber != 0) {
binary = decimalNumber%2 + binary;
decimalNumber = decimalNumber / 2;
}
return binary;
}
public static String toBinary(String hexNumber) {
if (hexNumber == null || hexNumber == "") {
return "";
}
char[] hexArray = hexNumber.toCharArray();
for (int i = 0; i < hexArray.length; i++) {
if (HEX.indexOf(hexArray[i]) == -1) {
return "";
}
}
return decimalToBinary(toDecimalFromHex(hexNumber));
}
}