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

  • 10
  • Недоступна
Публичный статический метод toBinary(int) должен переводить целое число, полученное в качестве входящего параметра, из десятичной системы счисления в двоичную и возвращать его строковое представление. А публичный статический метод toDecimal(String) наоборот - из строкового представления двоичного чи
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (231)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Anonymous #3223061
Уровень 1
около 6 часов назад
public static int toDecimal(String binaryNumber) {
        //напишите тут ваш код
        int decimalNumber = 0;
        if(!(binaryNumber == null || binaryNumber.equals("") )){
            char[] binToArray = binaryNumber.toCharArray();
            for (int i = 0; i < binToArray.length; i++) {
                decimalNumber = decimalNumber + Character.getNumericValue(binToArray[0]) * (int)(Math.pow(2, i));
            }
        }
        return decimalNumber;
    }
Чем не устраивает данный код, не могу понять
Alexander Komlichenko
Уровень 10
вчера, 21:35
public static String toBinary(int decimalNumber) {
        String binary = "";
        if(decimalNumber <= 0) return binary;
        while (decimalNumber != 0) {
            binary = decimalNumber % 2 + binary;
            decimalNumber /= 2;
        }
        return binary;
    }

    public static int toDecimal(String binaryNumber) {
        int decimal = 0;
        if (binaryNumber == null) return decimal;
        for (int i = 0; i < binaryNumber.length(); i++)
            decimal += Character.getNumericValue(binaryNumber.charAt(binaryNumber.length()-1-i)) * Math.pow(2.0,i);
        return decimal;
    }
}
18 попыток, но я добил его =)
Anonymous #3196841
Уровень 10
29 ноября, 22:04
Сделаль) Конечно оно не возьмет огромные числа как в примере, за-то тех знаний что были в лекциях ДО этого момента, на это хватает) П/C Валидацию не пройдет! числа великоваты) public static String toBinary(int decimalNumber) { int i = 0; int doubleNumber = 0; if (decimalNumber <= 0){ return ""; } else { while (decimalNumber >= 1){ doubleNumber = (int)(doubleNumber + (decimalNumber % 2)*Math.pow(10,i)); decimalNumber = decimalNumber/2; i++; } } return String.valueOf(doubleNumber); } public static int toDecimal(String binaryNumber) { int decRealNumber = 0; int i = 0; if (binaryNumber.equals("") || binaryNumber == null) { return 0; } else { long binaryRealNumber = Long.parseLong(binaryNumber); while (binaryRealNumber != 0) { decRealNumber = (int) (decRealNumber + (binaryRealNumber % 2) * Math.pow(2, i)); binaryRealNumber = binaryRealNumber/10; i++; } return decRealNumber; } }
Anna Sgibneva
Уровень 13
27 ноября, 21:26
я смогла!)) проблема была в том, что во первых я неправильно прописала проверку. надо было не && а || во вторых единичку типа char нужно преобразовывать в инт через Character.getNumericValue() , иначе вернется число- код символа "1", а не единица, и считать десятичное число метод будет неверно
public static int toDecimal(String binaryNumber) {
        int decimal = 0;

        if(!(binaryNumber == null || binaryNumber.equals(""))){
            char [] bin = new char[binaryNumber.length()];
            bin = binaryNumber.toCharArray();
            for ( int i = 0; i < binaryNumber.length(); i++){
                int val = Character.getNumericValue(bin[binaryNumber.length() - 1 - i]);
                decimal =(int)(decimal + val * (Math.pow(2, i)));
            }

        }return decimal;

    }
DagothUr
Уровень 3
26 ноября, 15:46
Браво автору браво тесты свои корявые можешь показать? А то не пойму что вас не устраивает
public static int toDecimal(String binaryNumber) {
            //напишите тут ваш код
            int decimalNumber = 0;
            if(binaryNumber == "0" || binaryNumber == null){
                return 0;
            }
            for(int i = 0; i<binaryNumber.length(); i++){
                if(binaryNumber.charAt(i) == '1') {
                    decimalNumber += Math.pow(2, i);
                }
            }
            return decimalNumber;
        }
CodeSiemens
Уровень 14
27 ноября, 15:57
Корявые твои навыки, а не тесты автора Как минимум неправильное условие if-а, дальше не читал "Если входящий параметр — ПУСТАЯ СТРОКА или null, то метод toDecimal(String) возвращает 0." "0" это не пустая строка, пустая строка это "". А еще == сравнивает ссылки на строки, а не сами строки. Поэтому вместо binaryNumber == "0" надо написать binaryNumber.equals(""). где equals() метод, сравнивающий сами строки, или binaryNumber.length() == 0 (так как если строка пуста, то ее длина 0). Ну и наконец сначала надо проверить, что строка не null, а уже потом пытаться ее с чем-то сравнить, поэтому правильно будет так: if (binaryNumber == null || binaryNumber.equals("")) Все это рассказывали в курсе ранее, можно попробовать изучить, перед тем как лезть сюда с первым уровнем, жалуясь на тесты автора :)
DagothUr
Уровень 3
28 ноября, 13:41
Молодой человек в данном примере там и есть "" в if просто скопировалось так. Вот зачем использовать equels()? Да мы сравниваем ссылку и значение, но эта ссылка же обращается к значению в памяти 0-о. Перейдем к длине строки или массива, так сказать length() тогда уж лучше использовать isEmpty(), он уже возвращает boolean значение проверяя что строка пустая. Курс интересный все записываю и реализовываю. Всем нам стоит его перечитывать, как мне, так и вам :) P.S. жалуюсь, потому что при всех выполненных требованиях к задаче(правильный результат и не использование тех методов которые запрещены) проверку не проходит именно на тестирование. Такое чувство сложилось что в данной задаче нужно все как автор строчка в строчку сделать.
Anna Sgibneva
Уровень 13
24 ноября, 20:27
почему не пропускает это решение? говорит , если будет null, метод должен возвращатть 0. проверила - возвращает как надо
public static int toDecimal(String binaryNumber) {
        int decimal = 0;

        if(!(binaryNumber == null)&& !binaryNumber.equals("")){
            char [] bin = binaryNumber.toCharArray();
            for ( int i = 0; i <binaryNumber.length(); i++){
                decimal = (int)(decimal + bin[binaryNumber.length() - 1 - i] * (Math.pow(2.0, i)));
            }

        }return decimal;

    }
MiB
Уровень 11
23 ноября, 09:43
ох сколько ломал голову над этой задачей...даже остановился на этом месте, взял отдых и заново прошел все уровни ))) пытался через массив, через преобразование в число...в интернете видел про CharAt - но ведь мы его не проходили...сдавшись сделать это на знаниях 10 уровней сделал через CharAt и после пройденной валидации чуть не сломал руку об стол )))
public static int toDecimal(String binaryNumber) {
        int decimalNumber = 0;
        if (binaryNumber == null || binaryNumber.length() == 0)
            return 0;
        else
            for (int i = 0; i < binaryNumber.length(); i++) {
                int x = binaryNumber.charAt(binaryNumber.length() - i - 1) == 49 ? 1:0;
                decimalNumber = decimalNumber +  x * (int)Math.pow(2,i);
            }
        return decimalNumber;
Sergey Zhoglo
Уровень 10
29 ноября, 20:40
что такое 49?
Денис
Уровень 10
6 декабря, 19:49
49 это порядковый номер 1 в unicode, который использует char. К примеру: char x = 49; System.out.print(x); Вывод:1.
Tony P
Уровень 12
17 ноября, 21:34
10061 учеников. вот и снова спустились к 10 тыщам. это посложнее задачка. не забывайте, что к String не добавляй, это добавится в конце символами!
SVCH
Уровень 17
16 ноября, 11:52
public static int toDecimal(String binaryNumber) {
    if (binaryNumber == null || binaryNumber.length() == 0) return 0;
    int result = 0;
    for (int i = 0; i < binaryNumber.length(); i++) {
        result += binaryNumber.charAt(binaryNumber.length() - i - 1) == '1'? Math.pow(2, i) : 0;
    }
    return result;
}
Seinek
Уровень 10
13 ноября, 07:53
Всем доброго утра. Подскажите, что здесь не так. Пишет, что мне надо убедиться, что в методе toDecimal при вводе null или пустой строки вернется ноль. Хотя это условие у меня есть.
public static int toDecimal(String binaryNumber) {
        if (binaryNumber == null || binaryNumber.equals("")) {
            return 0;
        }
        char[] arrOfChars = binaryNumber.toCharArray();
        int result = 0;
        for (int i = 0; i < arrOfChars.length; i++) {
            result += Integer.parseInt(String.valueOf(arrOfChars[arrOfChars.length-i-1])) * Math.pow(10,i);
        }
        return result;
    }