Я, конечно, понимаю, что скорее всего есть решение получше, чем у меня, да и во втором методе я намудрил с этими обертками. Но программа работает и валидатор ругается на первые два условия. Я вообще не могу предположить, что с ними не так. Если кто знает, подскажите пожалуйста. Смущают точнее "рекомендации от ментора": 1)Убедись, что метод toBinary(int) возвращает пустую строку, если на вход получает число, меньшее или равное 0. и 2)Убедись, что метод toDecimal(String) возвращает 0, если на вход получает пустую строку или null
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) {
if (decimalNumber <= 0) {return null;}
else {
int bin = 0;
int ten = decimalNumber;
while (ten != 0) {
bin = ten % 2 + bin;
ten = ten / 2;
}
String str = "";
for (int i = 0; i < bin; i++) {
str = str + "1";
}
return str;
}
}
public static int toDecimal(String binaryNumber) {
if (binaryNumber.equals("") || binaryNumber == null) {return 0;}
else {
int ten = 0;
for (int i = 0; i < binaryNumber.length(); i++) {
ten = (int) (ten + Integer.parseInt(String.valueOf(binaryNumber.charAt(i))) * Math.pow(2, i));
}
return ten;
}
}
}