Что именно не соблюдено в условии метода toBinary?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static final char[] HEX = {'0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
public static void main(String[] args) {
String binaryNumber = "100111010000";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
//перевод из 2-ой в 16-ю систему
public static String toHex(String binaryNumber) {
if(binaryNumber == null)
return "";
//перевод в 10-ю сис-му
char[] chr = binaryNumber.toCharArray();
int pw = 0;
int dec = 0;
for (int i =binaryNumber.length(); i > 0; --i) {
char symbol = chr[i - 1];
if (symbol == '1') {
dec = dec + 1 * (int) Math.pow(2, pw);
pw++;
} else if (symbol == '0') {
dec = dec + 0 * (int) Math.pow(2, pw);
pw++;
} else
return "";
}
//перевод в 16-ю сис-му
String hex = "";
while(dec != 0){
hex = HEX[dec % 16] + hex;
dec = dec / 16;
}
return hex;
}
//перевод из 16-ой в 2-ую сис-му
public static String toBinary(String hexNumber) {
if(hexNumber == null)
return "";
char chr[] = hexNumber.toCharArray();
//проверка на введение символа не входящего в 16-ю систему
for(int i = 0; i < chr.length; i++){
if((chr[i] < 48 | chr[i] > 102))
return "";
if(chr[i] > 57 && chr[i] < 97)
return "";
}
//перевод в 10-ю сис-му
int dec = 0;
for(int i = 0; i < hexNumber.length(); ++i){
int index = Character.getNumericValue(hexNumber.charAt(i));
dec = 16 * dec + index;
}
//перевод в 2-ю систему
String binary = "";
while(dec != 0){
binary = dec % 2 + binary;
dec /= 2;
}
return binary;
}
}