Не пропускает по второму условию
package com.javarush.task.pro.task09.task0908;
import java.util.Arrays;
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));
String hexNumber2 = "ghjk";
System.out.println("Шестнадцатеричное число " + hexNumber2 + " равно двоичному числу " + toBinary(hexNumber2));
String hexNumber3 = "";
System.out.println("Шестнадцатеричное число " + hexNumber3 + " равно двоичному числу " + toBinary(hexNumber3));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
String toHex = "";
if (binaryNumber == null || binaryNumber.equals("")) return toHex;
if (!binaryNumber.matches("[0-1]+")) return toHex;
if (binaryNumber.length()%4 != 0) {
char[] repeat = new char[binaryNumber.length()%4];
Arrays.fill(repeat, '0');
binaryNumber = new String(repeat) + binaryNumber;
}
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
decimalNumber += binaryNumber.charAt(binaryNumber.length() - i - 1) == '1' ? Math.pow(2, i) : 0;
}
while(decimalNumber!=0){
toHex = HEX.charAt(decimalNumber%16)+toHex;
decimalNumber = decimalNumber/16;
}
return toHex;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber = "";
int decimalNumber = 0;
if (hexNumber == "" || hexNumber == null) return binaryNumber;
for (int i = 0; i < hexNumber.length(); i++) {
char ch = hexNumber.charAt(i);
int ab = HEX.indexOf(ch);
if (ab < 0) {
return binaryNumber;
}
}
//if (!Pattern.matches("[0-9a-f]+", hexNumber)) return binaryNumber;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = 16 * decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
//if (decimalNumber <= 0) return "";
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}package com.javarush.task.pro.task09.task0908;
import java.util.Arrays;
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));
String hexNumber2 = "ghjk";
System.out.println("Шестнадцатеричное число " + hexNumber2 + " равно двоичному числу " + toBinary(hexNumber2));
String hexNumber3 = "";
System.out.println("Шестнадцатеричное число " + hexNumber3 + " равно двоичному числу " + toBinary(hexNumber3));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
String toHex = "";
if (binaryNumber == null || binaryNumber.equals("")) return toHex;
if (!binaryNumber.matches("[0-1]+")) return toHex;
if (binaryNumber.length()%4 != 0) {
char[] repeat = new char[binaryNumber.length()%4];
Arrays.fill(repeat, '0');
binaryNumber = new String(repeat) + binaryNumber;
}
int decimalNumber = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
decimalNumber += binaryNumber.charAt(binaryNumber.length() - i - 1) == '1' ? Math.pow(2, i) : 0;
}
while(decimalNumber!=0){
toHex = HEX.charAt(decimalNumber%16)+toHex;
decimalNumber = decimalNumber/16;
}
return toHex;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String binaryNumber = "";
int decimalNumber = 0;
if (hexNumber == "" || hexNumber == null) return binaryNumber;
for (int i = 0; i < hexNumber.length(); i++) {
char ch = hexNumber.charAt(i);
int ab = HEX.indexOf(ch);
if (ab < 0) {
return binaryNumber;
}
}
//if (!Pattern.matches("[0-9a-f]+", hexNumber)) return binaryNumber;
for (int i = 0; i < hexNumber.length(); i++) {
decimalNumber = 16 * decimalNumber + HEX.indexOf(hexNumber.charAt(i));
}
//if (decimalNumber <= 0) return "";
while (decimalNumber != 0) {
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}