JavaRush
Акция
Университет
Java FullStack
Python FullStack
new
Web FullStack
new
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Собственно, как и у всех - не проходит второе условие. Пр...
Artem Kirillov
23 уровень
  • 15.09.2021
  • 268просмотров
  • 1комментарий

Собственно, как и у всех - не проходит второе условие. Пробовал двумя способами, цифры тоже подставлял другие.

Вопрос по задаче Двоичный конвертер
Java Syntax,  10 уровень,  2 лекция
Обсуждается

Публичный статический метод toBinary(int) должен переводить целое число, полученное в качестве входящего параметра, из десятичной системы счисления в двоичную и возвращать его строковое представление. А публичный статический метод toDecimal(String) наоборот — из строкового представления двоичного числа в десятичное число.
Методы работают только с положительными числами и не пустыми строками. Если входящий параметр меньше или равен 0, метод toBinary(int) возвращает пустую строку. Если входящий параметр — пустая строка или null, то метод toDecimal(String) возвращает 0.
Твоя задача — реализовать эти методы.

Один из алгоритмов перевода десятичного числа в представление двоичного числа следующий:
while(десятичное число не равно 0) {
двоичное представление = остаток от деления десятичного числа на 2 + двоичное представление
десятичное число = десятичное число / 2
}

Один из алгоритмов перевода представления двоичного числа в десятичное число следующий:
for (int i = 0; i < длины двоичного представления; i++) {
десятичное число = десятичное число + число из двоичного представления * на 2 в степени i
}

Изначально берется крайнее правое число из двоичного представления. С каждой итерацией цикла берется следующее число ближе к началу двоичного представления.

Подсказка: чтобы возвести число к степени можно использовать метод Math.pow(число, степень).
Метод main() не принимает участие в тестировании.

Требования:
  • Нужно, чтобы метод toBinary(int) был реализован согласно условию.
  • Нужно, чтобы метод toDecimal(String) был реализован согласно условию.
  • Методы Integer.toBinaryString(int) и Long.toBinaryString(int) использовать нельзя.
  • Методы Integer.parseInt(String, int) и Long.parseLong(String, int) использовать нельзя.
  • Методы Integer.toString(int, int) и Long.toString(long, int) использовать нельзя.
  • Объект типа BigInteger использовать нельзя.
  • Объект типа BigDecimal использовать нельзя.
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 ""; } else { StringBuilder result = new StringBuilder(); int value = 0; while (decimalNumber / 2 != 0) { value = decimalNumber % 2; result.append(value); decimalNumber /= 2; } if (decimalNumber / 2 == 0 && decimalNumber % 2 == 1) { result.append(1); } return result.reverse().toString(); } } public static int toDecimal(String binaryNumber) { StringBuilder result = new StringBuilder(); char[] charArray = binaryNumber.toCharArray(); int decimalNumber = 0; if (binaryNumber.equals("") || binaryNumber == null) { return decimalNumber; } else { int value = 0; for (int i = 0; i < binaryNumber.length(); i++) { value += (int) Math.pow(2, i) * (binaryNumber.charAt(i) == '1' ? 1 : 0); } result.append(value); } decimalNumber = Integer.parseInt(result.toString()); return decimalNumber; } }
0
Комментарии (1)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ksenia VolkovaJava Developer в DXCMaster
15 сентября 2021, 16:11
if (binaryNumber.equals("") || binaryNumber == null)
Если binaryNumber будет null, то тут твоя программа упадет с ошибкой. Хотя нет, упадет она еще раньше - вот здесь:
char[] charArray = binaryNumber.toCharArray();
Ну и в самом алгоритме ошибка. Попробуй, например, toDecimal("100")
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush