Я сделал простую программу Java BlueJ, преобразующую двоичный код в десятичный, используя рекурсивную технику, которую мне задает вопрос. Он работает нормально для большинства значений, но есть проблема с 011.
Когда я ввожу 11
, он возвращает 3
. но когда я ввожу 011
или 0011
или 0000011
или так далее, это дает 9
. Я напечатал параметр x
сразу после ввода, чтобы проверить, где я ошибся. Он печатал x=9
, даже не x=11
. Как мне ввести 0011
как 11
(если нужно) ИЛИ как решить эту проблему? Вот код:
public class Binary
{
long convertDec(long x) {
long res=0;
long k=0;
while(x>0) {
res+=x%10*(long)Math.pow(2,k++);
x=x/10;
}
return res;
}
}
На самом деле это часть более крупного вопроса, поэтому я просто представляю необходимую часть. Я учусь в XII классе совета ISC, поэтому, пожалуйста, постарайтесь очень просто объяснить свой ответ. Я использую технику 110=1*2^2+1*2^1+0*2^0
.
String
для двоичного значения, а неlong
. - person Obicere   schedule 27.05.2014