мне интересно, в чем проблема моего решения задачи, пишет условие выполнения метода toDecimal не выполнено. может, это связано с тем, что бывают значения неточные при переводе в double? или что. совсем не понятно. все работает исправно. видимо, условие криво написано, ссмотрю решение и думаю, что оно очень странное.
package com.javarush.task.pro.task09.task0906;
import java.util.regex.Pattern;
/*
Двоичный конвертер
*/
public class Solution
{
public static void main(String[] args)
{
int decimalNumber = Integer.MAX_VALUE;
System.out.println("Десятичное число " + decimalNumber + " равно двоичному числу " + toBinary(decimalNumber));
String binaryNumber = "1111111111111111111111111111111";
System.out.println("Двоичное число " + binaryNumber + " равно десятичному числу " + toDecimal(binaryNumber));
}
public static String toBinary(int decimalNumber)
{
String binaryNumber = "";
if (decimalNumber > 0)
{
while (decimalNumber != 0)
{
binaryNumber = decimalNumber % 2 + binaryNumber;
decimalNumber /= 2;
}
return binaryNumber;
} else
{
return binaryNumber;
}
}
public static int toDecimal(String binaryNumber)
{
double decimalNumber = 0;
if (binaryNumber == null || binaryNumber.isEmpty())
{
return (int) decimalNumber;
} else
{
for (int i = 0; i < binaryNumber.length(); i++)
{
double a = Double.valueOf(binaryNumber);
decimalNumber = decimalNumber + a * Math.pow(2, i);
}
return (int) decimalNumber;
}
}
}