Не пропускает по 1 и 2 условию.
Помогите найти ошибку
P.S. Пишу вопрос заново, т.к. у прошлого вопроса сломался код
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public 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 hexNum = "";
//Проверка:
if(binaryNumber.isEmpty() || binaryNumber == null) return hexNum;
for (int i = 0; i < binaryNumber.length(); i++) {
int index = Character.getNumericValue(binaryNumber.charAt(i));
if(index == 1 || index == 0) {
continue;
}
return hexNum;
}
while ((binaryNumber.length()%4) != 0) {
binaryNumber = "0" + binaryNumber;
}
//Разделение:
int size = 4;
String[] bin1 = new String[(binaryNumber.length() / size)];
for(int i = 0; i < bin1.length; i++) {
int start = i * size;
int end = Math.min(start + size, binaryNumber.length());
bin1[i] = binaryNumber.substring(start, end); // 12 | 1001|1101|0000 - 4 * 1/2/3
}
//Перевод:
for(int i = 0; i < bin1.length; i++) {
bin1[i] = toHex(toDecimal(bin1[i]));
hexNum = hexNum + bin1[i];
}
return hexNum;
}
public static int toDecimal(String binNum) {
int decimal = 0;
for(int i = 0; i < binNum.length(); i++) {
int index = Character.getNumericValue(binNum.charAt(binNum.length()-1-i));
decimal += (int) (index * Math.pow(2, i));
}
return decimal;
}
public static String toHex(int dec) {
String hex = "";
while(dec > 0) {
char index = (HEX.charAt(dec%16));
hex = index + hex;
dec /= 16;
}
return hex.isEmpty()?"0":hex;
}
public static String toBinary(String hexNumber) {
String binNum = "";
boolean x = false;
//Проверка:
if(hexNumber.isEmpty() || hexNumber == null) return binNum;
for (int i = 0; i < hexNumber.length(); i++) {
int value = Character.getNumericValue(hexNumber.charAt(i));
for (int tmp = 0; tmp < 16; tmp++) {
if(value != tmp) x = true;
else {x = false;
break;}
}
if(x)
return binNum;
}
//Разделение:
int size = 1;
String[] hex1 = new String[(hexNumber.length() / size)];
for(int i = 0; i < hex1.length; i++) {
int start = i * size;
int end = Math.min(start + size, hexNumber.length());
hex1[i] = hexNumber.substring(start, end);
}
//Перевод:
for(int i = 0; i < hex1.length; i++) {
hex1[i] = decimalToBinary(hexToDecimal(hex1[i]));
binNum = binNum + hex1[i];
}
return binNum;
}
public static int hexToDecimal(String hexNumber) {
int dec = 0;
for(int i = 0; i < hexNumber.length(); i++) {
int index = HEX.indexOf(hexNumber.charAt(i));
dec = 16 * dec + index;
}
return dec;
}
public static String decimalToBinary(int decimalNumber) {
String bin = "";
while(decimalNumber > 0) {
bin = decimalNumber%2 + bin;
decimalNumber /= 2;
}
return bin.isEmpty()?"0":bin;
}
}