Алгоритм преобразования чисел?

#java #algorithm #binary #numbers #decimal

#java #алгоритм #двоичный #числа #десятичный

Вопрос:

 public static String DeciToBin(int i)
{
    String zero="0";
    String one="1";
    String str = "";
    if(i==0)
    {
        return zero;
    }
    if(i==1)
    {
        return one;
    }
    for(;i<2;i/=2)
    {
        if(i%2==1)
        {
            str= one str;
        }
        if(i%2==0)
        {
            str=zero str;
        }
    }
    return str;
}
  

Ничего не получилось, когда i больше 1. В этих строках нет ошибок или предостережений. Что я пропустил?

Комментарии:

1. Предположение i не является отрицательным, если i != 0 и i != 1 , то i < 2 сразу ложно. Пройдите по коду с помощью отладчика.

2. Подсказка: цикл for продолжается только в том случае, если условие (в вашем случае i<2 ) выполнено.

Ответ №1:

Вам нужно проверить i>0 , не остановится ли, если вы получите число 2 или более.

Вы можете значительно упростить это.

 public static String deciToBin(int i) {
    String str = "";
    do {
        str = (i amp; 1)   str;
        i >>>= 1;
    } while (i != 0);
    return str;
}
  

Еще лучше было бы использовать StringBuilder

 public static String deciToBin(int i) {
    StringBuilder str = new StringBuilder();
    do {
        str.append(i amp; 1);
        i >>>= 1;
    } while (i != 0);
    return str.reverse().toString();
}
  

Ответ №2:

Вы можете использовать следующий метод в java для преобразования int в двоичный.

 Integer.toBinaryString(a);
  

Вы можете использовать следующий метод в java для преобразования int в любую базу

 Integer.toString(Number, Base);