Нужно, чтобы метод toBinary(String) был реализован согласно условию. - такая ошибка.
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 HEX = "0123456789abcdef";
// Из двоичной в шестнадцатиричную.
if (binaryNumber == null || binaryNumber.isEmpty()) {
return "";
}
for (int i = 0; i < binaryNumber.length(); i++)
if ('0' != binaryNumber.charAt(i)) {
if (binaryNumber.charAt(i) != '1') return "";
}
int remainder = 4 - binaryNumber.length() % 4;
if (remainder != 4)
for (int i = 0; i < remainder; i++) {
binaryNumber = "0" + binaryNumber;
}
String tempFour = "";
String hexNumber = "";
for (int i = 0; i < binaryNumber.length(); i++) {
tempFour = tempFour + binaryNumber.charAt(i);
if ((i + 1) % 4 == 0) {
int decimalNumber = 0;
for (int j = 0; j < tempFour.length(); j++) {
decimalNumber = (int) (decimalNumber + (Character.getNumericValue((tempFour.charAt(tempFour.length()
- 1 - j)))) * Math.pow(2, j));
}
hexNumber = hexNumber + HEX.charAt(decimalNumber);
tempFour = "";
}
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
// Из шестнадцатеричной в двоичную.
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
if (HEX.indexOf(hexNumber.charAt(i)) == -1) return "";
}
String binaryNumber = "";
for (int i = 0; i < hexNumber.length(); i++) {
int index = HEX.indexOf(hexNumber.charAt(i));
String binaryNumberTemp = "";
if (index == 0)
binaryNumberTemp = "0000";
else {
while (index != 0) {
binaryNumberTemp = index % 2 + binaryNumberTemp;
index = index / 2;
}
}
binaryNumber += binaryNumberTemp;
}
return binaryNumber;
}
}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) {
String HEX = "0123456789abcdef";
// Из двоичной в шестнадцатиричную.
if (binaryNumber == null || binaryNumber.isEmpty()) {
return "";
}
for (int i = 0; i < binaryNumber.length(); i++)
if ('0' != binaryNumber.charAt(i)) {
if (binaryNumber.charAt(i) != '1') return "";
}
int remainder = 4 - binaryNumber.length() % 4;
if (remainder != 4)
for (int i = 0; i < remainder; i++) {
binaryNumber = "0" + binaryNumber;
}
String tempFour = "";
String hexNumber = "";
for (int i = 0; i < binaryNumber.length(); i++) {
tempFour = tempFour + binaryNumber.charAt(i);
if ((i + 1) % 4 == 0) {
int decimalNumber = 0;
for (int j = 0; j < tempFour.length(); j++) {
decimalNumber = (int) (decimalNumber + (Character.getNumericValue((tempFour.charAt(tempFour.length()
- 1 - j)))) * Math.pow(2, j));
}
hexNumber = hexNumber + HEX.charAt(decimalNumber);
tempFour = "";
}
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String HEX = "0123456789abcdef";
// Из шестнадцатеричной в двоичную.
if (hexNumber == null || hexNumber.isEmpty()) {
return "";
}
for (int i = 0; i < hexNumber.length(); i++) {
if (HEX.indexOf(hexNumber.charAt(i)) == -1) return "";
}
String binaryNumber = "";
for (int i = 0; i < hexNumber.length(); i++) {
int index = HEX.indexOf(hexNumber.charAt(i));
String binaryNumberTemp = "";
if (index == 0)
binaryNumberTemp = "0000";
else {
while (index != 0) {
binaryNumberTemp = index % 2 + binaryNumberTemp;
index = index / 2;
}
}
binaryNumber += binaryNumberTemp;
}
return binaryNumber;
}
}