Программа двоичного разрыва на JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Программа двоичного разрыва на Java

Сообщение Anonymous »

Моя формулировка проблемы:


Двоичный пробел внутри положительного целого числа N — это любая максимальная последовательность последовательных нулей, окруженная единицами с обоих концов в двоичном представлении N. Например, число 9 имеет двоичное представление 1001 и содержит двоичный пробел длины 2. Число 529 имеет двоичное представление 1000010001 и содержит два двоичных пробела: один длиной 4 и один длиной 3. Число 20 имеет двоичное представление 10100 и содержит один двоичный пробел длиной 1. Число 15 имеет двоичное представление 1111 и не имеет двоичных пробелов. Число 32 имеет двоичное представление 100000 и не имеет двоичных пробелов.


Мой код:

Код: Выделить всё

public class Abc {

static void decToBinary(int n) {

int[] binaryNum = new int[1000];

// counter for binary array
int i = 0;
while (n > 0) {
// storing remainder in binary array
binaryNum[i] = n % 2;
n = n / 2;
i++;
}
int ctr = 0, k = 0;
ArrayList al = new ArrayList();

// printing binary array in reverse order
for (int j = i - 1; j >= 0; j--) {
System.out.print(binaryNum[j]);
if (binaryNum[j] == 0) {
k = j;
do {
ctr++;
k++;
} while (binaryNum[k] == 0);
al.add(ctr);
ctr = 0;
}
}

for (int ii = 0; ii < al.size(); ii++) {
System.out.println(al.get(ii));
}
}

// driver program
public static void main(String[] args) {
int n = 1041;
decToBinary(n);
}
}
Я пытаюсь показать результат двоичного разрыва, который хранится в моем ArrayList. Но результат для данного ввода 1041 совершенно другой. Я не знаю, почему он сохраняет 1,2,3,4; согласно моей логике, он должен хранить только значения пробелов 5 и 3 в случае ввода: 1041, хотя 5 и 3 также хранятся в ArrayList, но по какому-то другому индексу.

Я думаю, что есть проблема в цикле do- while, особенно в al.add(ctr), но я еще не разобрался с этим.

Подробнее здесь: https://stackoverflow.com/questions/527 ... am-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»