Как проверить массив на возможные делители?

1

Создавая массив, я разрешаю пользователю выбирать длину:

StartNum = scan.nextInt();
int[] NumBox = new int[StartNum];

 for (int i = 1; i < NumBox.length+1; i++)
  {NumBox[i - 1] = i;}

NumBox[0]=0;

Предполагая, что существуют другие методы, которые могут изменять ячейки в NumBox до 0, как использовать цикл for для проверки каждой ячейки в массиве для любого делителя? Если для ячейки в массиве нет делителей, тогда он станет 0. Например, если массив равен [0,2,0,4,0,6,7,8,9] 9,2 and 7 станет 0.

Код ниже - это то, что я устал, но далеко не ушел.

boolean NoDiv=false;
for (int a=1; a < NumBox.length+1; a++)
{
    a++
    for (int check=1; a < NumBox.length+1; check++)
    {
        if (NumBox[a-1]% check == 0 && NumBox[a-1] !=0) 
        {
            NumBox[a-1] = 0;
        }
    }
}
Теги:
arrays
for-loop

1 ответ

0
for (int i = 0; i < NumBox.length; i++) {
    if (NumBox[i] == 0) continue;
    boolean hasDivisor = false;
    for (int j = 0; j < i; j++) {
        if (NumBox[j] == 0) continue;
        if (NumBox[i] % NumBox[j] == 0) {
            hasDivisor = true;
            break;
        }
    }
    if (!hasDivisor) NumBox[i] = 0;
}
  • 0
    NumBox.Length Я думаю, это была опечатка?
  • 0
    нет, эта часть верна в вашем коде. Но элементы массива имеют индексы от 0 до NumBox.Length - 1, и если вы ссылаетесь на другой индекс, вы получаете исключение ArrayIndexOutOfBoundsException.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню