Прошу прощения за кривой код😅😅😅. Подскажите в чём косяк, плиз😇
package com.javarush.task.pro.task09.task0908;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
private static String[] symbols = {"2", "3", "4", "5", "6", "7", "8", "9"};
public static void main(String[] args) {
// String binaryNumber = "103";
String binaryNumber = "100111010000";
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "9d0";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static boolean isBinaryCorrect(String binaryNumber){
for(int i = 0; i <symbols.length; i++) {
if (binaryNumber.contains(symbols[i]))
return false;
}
return true;
}
public static String toHex(String binaryNumber) {
String hexNumber="";
if (binaryNumber!=null && !binaryNumber.equals("")) {
if (isBinaryCorrect(binaryNumber)) {
// if (binaryNumber.contains("0") && binaryNumber.contains("1")) {
if (binaryNumber.length()%4!=0) {
if (binaryNumber.length()%4==1) {binaryNumber="000"+binaryNumber;}
else if (binaryNumber.length()%4==2) {binaryNumber="00"+binaryNumber;}
else if (binaryNumber.length()%4==3) binaryNumber="0"+binaryNumber;
}
char[] chars=binaryNumber.toCharArray();
for (int i=0; i <binaryNumber.length(); i=i+4) {
String str="";
for (int j=i; j <i+4; j++) {
str=str+chars[j];
}
switch (str){
case ("0000"):
hexNumber=hexNumber+"0";
break;
case ("0001"):
hexNumber=hexNumber+"1";
break;
case ("0010"):
hexNumber=hexNumber+"2";
break;
case ("0011"):
hexNumber=hexNumber+"3";
break;
case ("0100"):
hexNumber=hexNumber+"4";
break;
case ("0101"):
hexNumber=hexNumber+"5";
break;
case ("0110"):
hexNumber=hexNumber+"6";
break;
case ("0111"):
hexNumber=hexNumber+"7";
break;
case ("1000"):
hexNumber=hexNumber+"8";
break;
case ("1001"):
hexNumber=hexNumber+"9";
break;
case ("1010"):
hexNumber=hexNumber+"a";
break;
case ("1011"):
hexNumber=hexNumber+"b";
break;
case ("1100"):
hexNumber=hexNumber+"c";
break;
case ("1101"):
hexNumber=hexNumber+"d";
break;
case ("1110"):
hexNumber=hexNumber+"e";
break;
case ("1111"):
hexNumber=hexNumber+"f";
break;
default:
hexNumber=hexNumber+"";
break;
}
};
} else return hexNumber;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String binaryNumber="";
if (hexNumber!=null && !hexNumber.equals("")){
if (hexNumber.contains("0")
||hexNumber.contains("1")
||hexNumber.contains("2")
||hexNumber.contains("3")
||hexNumber.contains("4")
||hexNumber.contains("5")
||hexNumber.contains("6")
||hexNumber.contains("7")
||hexNumber.contains("8")
||hexNumber.contains("9")
||hexNumber.contains("a")
||hexNumber.contains("b")
||hexNumber.contains("c")
||hexNumber.contains("d") ||hexNumber.contains("e") ||hexNumber.contains("f")){
char[] chars=hexNumber.toCharArray();
for (int i = 0; i <hexNumber.length(); i++) {
switch (chars[i]){
case ('0'):
binaryNumber=binaryNumber+"0000";
break;
case ('1'):
binaryNumber=binaryNumber+"0001";
break;
case ('2'):
binaryNumber=binaryNumber+"0010";
break;
case ('3'):
binaryNumber=binaryNumber+"0011";
break;
case ('4'):
binaryNumber=binaryNumber+"0100";
break;
case ('5'):
binaryNumber=binaryNumber+"0101";
break;
case ('6'):
binaryNumber=binaryNumber+"0110";
break;
case ('7'):
binaryNumber=binaryNumber+"0111";
break;
case ('8'):
binaryNumber=binaryNumber+"1000";
break;
case ('9'):
binaryNumber=binaryNumber+"1001";
break;
case ('a'):
binaryNumber=binaryNumber+"1010";
break;
case ('b'):
binaryNumber=binaryNumber+"1011";
break;
case ('c'):
binaryNumber=binaryNumber+"1100";
break;
case ('d'):
binaryNumber=binaryNumber+"1101";
break;
case ('e'):
binaryNumber=binaryNumber+"1110";
break;
case ('f'):
binaryNumber=binaryNumber+"1111";
break;
default:
binaryNumber=binaryNumber+"";
break;
}
}
}
}
return binaryNumber;
}
}
2. В методе toHex для введённого 1101110100000001 программа вывела dd1, а калькулятор windows dd01. 