public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == "" || hexNumber == null)
return "";
else {
String tob = "";
for (int i = hexNumber.length() - 1; i >= 0; i--) {
int o = 0;
String t = "";
if (hexNumber.charAt(i) >= '1' && hexNumber.charAt(i) <= '9') {
int real = Character.getNumericValue(hexNumber.charAt(i));
while (real > 0) {
o = real % 2;
char c = HEX.charAt(o);
t = c + t;
real = real / 2;
}
}
else if (hexNumber.charAt(i) >= 'a' && hexNumber.charAt(i) <= 'f') {
int no = HEX.indexOf(hexNumber.charAt(i));
while (no > 0) {
o = no % 2;
char c = HEX.charAt(o);
t = c + t;
no = no / 2;
}
}
else if (hexNumber.charAt(i) == '0')
t = "0000" + t;
else
return "";
tob = t + tob;
}
return tob;
}
}
прошу прощения за "говнокод", но я искренне не понимаю в чем проблема второго требования, вывод корректный. Надеюсь на вашу помощь :(
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
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) {
//напишите тут ваш код
if (binaryNumber == "" || binaryNumber == null)
return "";
else {
int too = 0;
int pow = 0;
for (int i = binaryNumber.length() - 1; i >= 0; i--) {
if (binaryNumber.charAt(i) == '1') {
too = (int) (too + Math.pow(2, pow));
pow++;
} else if (binaryNumber.charAt(i) == '0') {
pow++;
continue;
} else
return "";
}
String toh = "";
int o = 0;
while (too > 0) {
o = too % 16;
char c = HEX.charAt(o);
toh = c + toh;
too = too / 16;
}
return toh;
}
}
public static String toBinary(String hexNumber) {
//напишите тут ваш код
if (hexNumber == "" || hexNumber == null)
return "";
else {
String tob = "";
for (int i = hexNumber.length() - 1; i >= 0; i--) {
int o = 0;
String t = "";
if (hexNumber.charAt(i) >= '1' && hexNumber.charAt(i) <= '9') {
int real = Character.getNumericValue(hexNumber.charAt(i));
while (real > 0) {
o = real % 2;
char c = HEX.charAt(o);
t = c + t;
real = real / 2;
}
}
else if (hexNumber.charAt(i) >= 'a' && hexNumber.charAt(i) <= 'f') {
int no = HEX.indexOf(hexNumber.charAt(i));
while (no > 0) {
o = no % 2;
char c = HEX.charAt(o);
t = c + t;
no = no / 2;
}
}
else if (hexNumber.charAt(i) == '0')
t = "0000" + t;
else
return "";
tob = t + tob;
}
return tob;
}
}
}