Не пропускает по 2 требованию. Хотя код работает по условию задачи.
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 Boolean proverkabinaryNumber(String binaryNumber) {
boolean b = true;
for (int i = 0; i < binaryNumber.length(); i++) {
String a = String.valueOf(binaryNumber.charAt(i));
if (a.equals("0") || a.equals("1")) {
b = true;
}else{
b = false;
break;
}
}
return b;
}
public static Boolean proverkahexNumber(String hexNumber) {
boolean b = true;
for (int i = 0; i < hexNumber.length(); i++) {
String a = String.valueOf(hexNumber.charAt(i));
if (HEX.indexOf(a) == -1) {
b = false;
break;
}else{
b = true;
}
}
return b;
}
public static String toHex(String binaryNumber) {
if (binaryNumber == (null) || binaryNumber.equals("")) {
return "";
}else if (proverkabinaryNumber(binaryNumber) == false){
return "";
}else{
int decimalNumber = Integer.valueOf(binaryNumber,2);
String result = new String();
while (decimalNumber != 0){
result = HEX.charAt(decimalNumber%16)+result;
decimalNumber = decimalNumber/16;//напишите тут ваш код
}
return result;
}
}
public static String toBinary(String hexNumber) {
if (hexNumber == (null) || hexNumber.equals("")) {
return "";
}else if (proverkahexNumber(hexNumber) == false){
return "";
}else{
int decimalNumber = Integer.valueOf(hexNumber,16);
String result = new String();
while (decimalNumber != 0){
result = result+(decimalNumber%2);
decimalNumber = decimalNumber/2;//напишите тут ваш код
}
StringBuilder c = new StringBuilder(result);
return c.reverse().toString();
}
}
}