#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);