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

  • 10
  • Недоступна
Публичный статический метод toBinary(int) должен переводить целое число, полученное в качестве входящего параметра, из десятичной системы счисления в двоичную и возвращать его строковое представление. А публичный статический метод toDecimal(String) наоборот - из строкового представления двоичного чи
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (179)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Roman
Уровень 10
4 августа, 09:11
Начал гуглить преобразование строк в число, но в большинстве предлагали использовать Integer.parseInt. Но потом наткнулся на Integer.valueOf() и сразу даже не понял как он работает, но спустя день, от безнадеги решил поэкспериментировать и нашел решение, которое не предусматривает использование binaryNumber.charAt(). Кому интересно можно прочесть в этой статье. Всем удачи в поисках.
Radical Ed
Уровень 11, Тверь, Russian Federation
3 августа, 16:34
Решил сам, написав свои способы преобразования. Единственное, что не смог обойтись без charAt(). Кто-нибудь, объясните мне, как работает такая фигня: Если от символа числа в цифровом формате обнять "0" то мы получим номинальное значение. charAt (char) - '0' дает число. Нагуглил в интернете но не понял как это работает и нигде не могу найти
Benjam1nBTN
Уровень 7, Бронницы, Россия
27 июля, 10:08
Решил сам без подсказок только с гуглением! Так рад! У меня даже код короче и проще правильного решения. Но блин, всё равно не проходит проверка второго условия (метода toDecimal), хотя в терминал всё корректно выводится. Комментарий "Не выполнены все требования задачи" не очень то помогает понять ошибку. Что делать то? метод выглядит так: for (int i = 0; i < binaryNumber.length(); i++) { decimalNumber = (int) (decimalNumber + binaryNumber.charAt(i) * Math.pow(2, i)); } return decimalNumber;
Роман
Уровень 14, Москва, Russian Federation
31 июля, 17:25
charAt() возвращает код символа 49, а надо вернуть само число 1. И считывать из строки надо с последнего по первый символ.
Benjam1nBTN
Уровень 7, Бронницы, Россия
1 августа, 05:39
Так, подсмотрел из правильного решения и добавил Character.getNumericValue, цикл пустил с конца в начало. Ответ в консоль выводится опять же верный, но "Не выполнены все требования задачи"....((( for (int i = binaryNumber.length()-1; i >= 0; i--) { int value = Character.getNumericValue(binaryNumber.charAt(i)); decimalNumber = (int) (decimalNumber + value * Math.pow(2, i)); } return decimalNumber;
Роман
Уровень 14, Москва, Russian Federation
1 августа, 11:39
decimalNumber += value * Math.pow(2, i);
Benjam1nBTN
Уровень 7, Бронницы, Россия
1 августа, 13:23
Так это то же самое, и всё равно проверку не проходит. По факту никак кроме "правильного решения" не решить эту задачу. По моему мнению в процедуре проверки заложена ошибка
Роман
Уровень 14, Москва, Russian Federation
1 августа, 14:33
я знаю что тоже самое :) вот так у меня тоже не проходило валидацию: for (int i = 0; i < binaryNumber.length(); i++) { int index = binaryNumber.length() - i - 1; int value = Character.getNumericValue(binaryNumber.charAt(index)); decimalNumber = (int) (decimalNumber + value * Math.pow(2, i)); } return decimalNumber; Да скорей всего именно в самой валидации проблема
Benjam1nBTN
Уровень 7, Бронницы, Россия
1 августа, 14:43
Спасибо!)
Александр Сергеев
Уровень 14, Подольск, Россия
18 июля, 18:09
ВНИМАНИЕ! СПОЙЛЕРЫ! По условию: Если входящий параметр — пустая строка или null, то метод toDecimal(String) возвращает 0. И выглядеть это должно так: if (binaryNumber == null || binaryNumber.equals("")) { return decimalNumber; } У авторского решения такая проверка отсутствует и он пишет: if (binaryNumber == null) { return decimalNumber; } проверяя, тем самым, только значени null, но не пустую строку "".
Александр Сергеев
Уровень 14, Подольск, Россия
18 июля, 17:43
Блин, с переводом из десятичной в двоичную легка все получается. А вот с приведением типов в обратном методе можно пальцы вывихнуть....
slar69
Уровень 16, Москва, Russian Federation
12 июля, 13:09
Тут создатели ресурса поленились, поэтому я объясню. У класса String уесть метод chatAt(int i), который возвращает целочисленное значение кода i-го элемента строки. Без этого или аналогичного метода выполнить задание вряд ли возможно на нашем уровне. Просто невозможно получить иначе доступ к содержимому строки.
Benjam1nBTN
Уровень 7, Бронницы, Россия
1 августа, 05:41
Что значит поленились?)
Obez
Уровень 19, Latvia
27 июня, 13:11
Сделал весь код - работает. Не было не одной ошибки, но проверка не пропускает. Все проверил по 10 раз, решил проверить уже готовый ответ - все сходится. Скопировал ответ в идею, даже так не пропускает.
SHOWTlME
Уровень 19, Belarus
26 июня, 11:00
Правильный код тоже неправильно работает если в binaryNumber добавить пробел.
String binaryNumber = "    ";
будет ответ с минусом, хотя должен 0 возвращать.
Василиса
Уровень 14
17 июня, 05:23
если бы не комментарии, я бы ничего не решила😬 P.S null это не пустая строка?
Ви
Уровень 28, Москва, Россия
18 июня, 16:27
Привет! Нет, null - это отсутствие значения. Переменная, которая ни на что не ссылается. Созданный ключ для несуществующего замка(плохая аналогия, но ладно) Пустая строка - это тоже строка, с которой можно взаимодействовать, как с любой другой строкой. То есть переменная, которая хранит ссылку на пустую строку, ссылается на существующий объект. В одной из лекций про массивы в качестве дополнительного материала было предложено прочесть статью, почему стоит возвращать массив нулевой длины, а не null(тык). Думаю, если её перечитать, станет чуть понятнее различие :)
Никита Ильин
Уровень 28, Вязьма, Russian Federation
7 июля, 13:10
null это отсутствие ссылки.
Peter
Уровень 17
12 июня, 17:33
ранее в лекция учили методу Intger.parseInt() - его нельзя использовать. Ну а тот, что не учили Character.getNumericValue() - да, пожалуйста... задача, чтобы люди гуглили еще методы, которых не было?
Александр Сергеев
Уровень 14, Подольск, Россия
18 июля, 18:03
Поддержу. Видимо да, чтоб гуглили, но лично по моим субъективным ощущениям, еще рановато такую сложность давать.