Программа почтового ящика Java (переключение логических значений) - PullRequest
0 голосов
/ 25 апреля 2018

Мне поручено создать программу, в которой пользователь вводит число, и это будет общее количество почтовых ящиков. Все почтовые ящики будут запускаться в закрытой позиции (логическое значение true). Затем вы будете переворачивать каждый второй почтовый ящик, затем третий, затем четвертый, затем пятый и так далее, пока не дойдете до последнего перевернутого почтового ящика. Затем вы должны сообщить, какие почтовые ящики остаются закрытыми. Мне еще не нужно возвращать пользователю закрытые ящики. Как я застрял на том, как заставить его фильтровать через массив.

    scanner  input = new Scanner(System.in);
    System.out.println("This program will close and open mailboxes in a fixed pattern.  How many mailboxes would you like to see?");
    int numOfBoxes = input.nextInt();
    boolean [] boxes = new boolean [numOfBoxes];
    for(int i = 0; i <= numOfBoxes; i++){
      for(int j = 2; j <= numOfBoxes; j++){
        if(boxes.indexOf[i] % j == 0){
           boxes[i] = !boxes[i];
        }
      }
    }

1 Ответ

0 голосов
/ 25 апреля 2018

Как насчет

for(int i=2; i<=numOfBoxes; ++i) {
    for(int j=i-1; j<numOfBoxes; j+=i) {
        boxes[j] = !boxes[j]
    }
}

Это делает то, что вы хотите?


Редактировать

Вотполный рабочий пример:

public static void main(String[] args) {
    int numOfBoxes = 5;
    boolean [] boxes = new boolean [numOfBoxes];
    for(int i = 2; i <= numOfBoxes; ++i){
      for(int j = i-1; j < numOfBoxes; j+=i){
        boxes[j] = !boxes[j];
      }
    }
    System.out.println(Arrays.toString(boxes));
}

Запуск дает мне следующий вывод:

[false, true, true, false, true]
...