Двоичный конвертер

  • 10
  • Недоступна
Публичный статический метод toBinary(int) должен переводить целое число, полученное в качестве входящего параметра, из десятичной системы счисления в двоичную и возвращать его строковое представление. А публичный статический метод toDecimal(String) наоборот - из строкового представления двоичного чи
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (92)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Илья Системный администратор
13 января, 17:54
За 5 часов я всё же решил задачу... Она полностью соответствует требованиям, но... Хвалёный валидатор конечно же её не принимает... 😕😑
Igor
Уровень 14, Edmonton, Canada
12 января, 05:12
Решил задачу по второму методу через Double. Все прекрасно считается, перепробовал разные значения binaryNumber но валидатор ругается и настаивает чтобы я сделал через Character.
Lonlost
Уровень 10, Ul'yanovsk, Russian Federation
8 января, 08:30
Вот интересно, кто-нибудь может мне объяснить, почему при такой форме записи компилятор ругается на не состыковку типов:
decimalNumber = decimalNumber + value * Math.pow(2, i);
А на такую форму записи не ругается, все работает:
decimalNumber += value * Math.pow(2, i);
Разве это не одно и то же?
Денис Консультант
7 января, 15:31
Зачем давать задачи, если эти темы еще не разобраны?
Kango Vince
Уровень 14, Санкт-Петербург, Россия
15 января, 18:22
Учиться гуглить -_-
George Cherenkov
Уровень 5, Киев, Ukraine
26 декабря 2021, 11:34
toBinary Можно ли убрать конструкцию IF и использовать while > 0 (в случае нуля или отрицательного значения, цикл не будет выполнен и вернется пустая строка) ? toDecimal объясните мне почему идет строгая типизация аргумента типа String, куда нельзя передать null, но надо учитывать что туда придет null ? И еще вопрос. Почему в задаче идет приписка "Используйте Math.pow", который мы учили в других лекциях и нет ничего про "Прочтите, что мы вам не рассказывали о классе Character и работе со строками типо charAt(index)) ? Вот это куда важнее чем Math.pow. Увидел - пошел читать мануал, вернулся - сделал задачу. Интересно дальше по курсу будет замена знаний у людей с костылей на прикладные ? Ибо если надо будет где-то что-то сделать подобное в реальных условиях и человек напишет такую простыню с 3 return я прям вижу как в команде будут сильно задаваться вопросами.
zxc-17
Уровень 13, Казань
13 января, 09:31
В строку можно передать null, попробуй:
public class Practicum {
    public static void main(String[] args) {
        String s = null;
        System.out.println(s);
    }
}
А по поводу всего остального... Спорный вопрос. С одной стороны на начальном этапе преподаватель не должен ожидать, что ученики сами до всего дойдут, с другой - самостоятельный поиск знаний тоже чертовски важен, в жизни без этого никак.
George Cherenkov
Уровень 5, Киев, Ukraine
18 января, 16:35
Там метод с типизацией параметра "строка". И его его вызвать и передать туда null, то оно не скомпилируется даже и укажет ошибку. Т.е. тест написан через (я не знаю как в Джаве, но рефлексия) и прокидывают туда null, к чему метод не готов. Мне кажется что тогда уже надо все проверять, ведь таким образом можно в любой метод запихнуть нул вместо любого параметра.
valers0n
Уровень 13, Санкт-Петербург, Russian Federation
14 декабря 2021, 22:02
Для реализации метода toBinary советую просмотреть лекцию по литералам еще раз. При реализации метода toDecimal к binaryNumber можно применить метод split("")
_TIER_
Уровень 13, Алматы, Казахстан
2 декабря 2021, 14:09
Метод charAt() в Java Думаю эта лекция будет полезной)
Евгений Train Driver в Moscow Underground
1 декабря 2021, 13:36
Это было очень сложно, но, спустя несколько часов, оно заработало. Полный восторг. Очень много времени потратил на перевод из двоичной системы в десятичную. Может кому поможет алгоритм. 1. Отзеркалил строку. 2. Создал массив символов и заполнил его символами из строки. 3. Создал массив целочисленных чисел. 4. С помощью сравнения символов с нулем или единицей заполнил его.(
if char[i] == 1)          int[i] = 1;
5. Запустил цикл
десятичное число += int[i] * 2 в степени i;
Igor Levin QA Engineer в Ай-Теко
27 ноября 2021, 14:55
binaryNumber = decimalNumber % 2 + binaryNumber У меня к этой задачке только один вопрос. Разве можно в типе String проводить какие либо вычисления с целыми и вещественными числами?
Кирилл Руковицын
Уровень 12, Москва
7 декабря 2021, 08:50
ты выполняешь вычисления не в объекте String, а в методе, который после выполнения всех операций возвращает объект класса String
Егор А. Марков
Уровень 12, Москва
25 ноября 2021, 14:03
Коллеги, вопрос почему двоичное представление = остаток от деления десятичного числа на 2 + двоичное представление и двоичное представление = двоичное представление +остаток от деления десятичного числа на 2 дают разные ответы? совершенно не доходит до меня
Fleser
Уровень 22, Днепр, Ukraine
2 декабря 2021, 10:06
Скорее всего потому что результат сохраняется в переменную типа String. А для строки добавление всегда идет в конец строки: а + б + 1 + 0 = аб10 или 0 + 1 + б + а = 01ба. Поэтому если писать двоичное_представление = остаток_от_деления_десятичного_числа_на_2 + двоичное_представление, то результат будет добавляться в начало строки. Но так как с каждой итерацией мы находим более старший разряд двоичного числа, то нам и нужно его ставить на первое место в двоичном числе. Т. о. мы получаем правильное двоичное чисто. Если же двоичное_представление = двоичное_представление +остаток_от_деления_десятичного_числа_на_2, то более старшие разряды двоичного числа добавляются в конец числи, и т. о. мы получим число в обратно порядке. Вот простой пример для десятичных чисел:
String text = "", text2 = "";
        for (int i = 0; i < 5; i++) {
            text = text + i;
            text2 = i + text2;
        }
        System.out.println(text);
        System.out.println(text2);
    }
Результат вывода будет: 01234 43210
Егор А. Марков
Уровень 12, Москва
5 декабря 2021, 18:17
Спасибо большое, товарищ! Очень интересный ответ, благодарю!