считает все правильно, видимо, проблема в проверке на пустую строку или несоответствии алфавиту. в первой части облапошилась в самом простом - операторах. спасибо @Kseniya Volkova, исправила, прошло. но что не так со второй частью?
package com.javarush.task.pro.task09.task0908;
import java.util.regex.Pattern;
/*
Двоично-шестнадцатеричный конвертер
*/
public class Solution {
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 HEX="0123456789abcdef"; //16ричный алфавит
if (binaryNumber==null||binaryNumber=="" ) return ""; //проверка на пустую строку
int decimalNumber=0; //ввод 10чного числа
for (int i = 0; i < binaryNumber.length(); i++) { //цикл считывания из строки
int index=binaryNumber.length() -1 -i; //используем числа справа налево а не наоборот
int num=Character.getNumericValue(binaryNumber.charAt(index)); //считываем число
if (num==0||num==1) //если число 0 или 1
decimalNumber=decimalNumber+num* (int) Math.pow(2,i); //собсна,сам перевод на 10ричное
else return""; //если нет - пустая строка
}
String hexNumber=""; //перевод из 10ричного в 16ричное
while (decimalNumber!=0){
int index=decimalNumber%16;
hexNumber=HEX.charAt(index)+hexNumber;
decimalNumber=decimalNumber/16;
}
return hexNumber;
}
public static String toBinary(String hexNumber) {
String HEX="0123456789abcdef"; //16ричный алфавит
if (hexNumber==null||hexNumber=="") return ""; //проверка на пустую строку
int decimalNumber=0; //вводим 10ричное
for (int i=0; i<hexNumber.length(); i++) { //цикл считыания из строки
char symb=hexNumber.charAt(i); //считываем символ
int ind=HEX.indexOf(symb); //ищем его индекс в алфавите
if (ind<0) return ""; //проверка на наличие этого символа в алфивите
else decimalNumber=16*decimalNumber+ind; //перевод 16ричного в 10ричное
}
String binaryNumber=""; //перевод 10чного в двоичное
if (decimalNumber<=0) return binaryNumber;
while (decimalNumber!=0) {
binaryNumber = (decimalNumber % 2)+binaryNumber;
decimalNumber = decimalNumber / 2;
}
return binaryNumber;
}
}