Что я сделал не так?
Ладно он ругается на метод toBinary, я там фигней страдал, но toHex сделал нормально.
Посмотрел решение, там через стену "if else" условий, а я совершенно не хочу так делать.
Вообщем мой вопрос: лыжи не едут или я дурак?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
public static void main(String[] args) {
String binaryNumber = "1100111010000";//"100111010000"
System.out.println("Двоичное число " + binaryNumber + " равно шестнадцатеричному числу " + toHex(binaryNumber));
String hexNumber = "64df";
System.out.println("Шестнадцатеричное число " + hexNumber + " равно двоичному числу " + toBinary(hexNumber));
}
public static String toHex(String binaryNumber) {
//напишите тут ваш код
String hex = "";
String bString;
int temp;
String[] hexString = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
if (binaryNumber!=null && binaryNumber.matches("^[0-1]+$")){
if (binaryNumber.length()%4!=0){
for (int i = 0; i < binaryNumber.length()%4; i++) {
binaryNumber = "0" + binaryNumber;
}
}
for (int i = 0; i < binaryNumber.length();i=i+4) {
bString = binaryNumber.substring(i,i+1) + binaryNumber.substring(i+1,i+2) + binaryNumber.substring(i+2,i+3) + binaryNumber.substring(i+3,i+4);
temp = 0;
for (int j = 0; j < 4; j++) {
temp = (int) (Character.getNumericValue(bString.charAt(j))*Math.pow(2,j))+temp;
}
hex = hex + hexString[temp];
}
}
return hex;
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
String bin = "";
String temp;
String[] hexString = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
int index = -1;
if (hexNumber!=null && hexNumber.matches("^[a-fA-f0-9]+$")){
for (int i = 0; i < hexNumber.length(); i++) {
temp = hexNumber.substring(i,i+1);
index = -1;
for (int j = 0; j < hexString.length; j++) {
if (temp.equals(hexString[j])){
index = j;
}
}
String bString = "";
if (index>0){
while (index!=0){
bString = index%2 + bString;
index = index/2;
}
} else if (index==0){
bString = "0000";
}
if (bString.length()%4!=0){
for (int k = 0; k < bString.length()%4; k++) {
bString = "0" + bString;
}
}
bin = bin + bString;
}
bin = bin.replaceFirst("^0+(?!$)","");
}
return bin;
}
}