Java non comprensivo di 100 in 100 armadietti


IL mio output desiderato è locker 1,4,9,16,36,49,81 E 100. Sto iterando cercando di trovare quali armadietti dopo che uno studente è stato inviato e apre ogni armadietto. (Tutti sono chiusi per impostazione predefinita) e apre ogni armadietto. quindi lo studente numero 2 va in ogni altro armadietto, e se è aperto, chiudilo, e se è chiuso, aprilo. Studente tre fa lo stesso, ma con ogni terzo armadietto. Fino allo studente 100. So che l'output dovrebbe essere tutti i numeri quadrati ma non riesco a ottenere il 100 presentarsi. Cosa mi sto perdendo? Ho messo un

import java.util.Arrays;

public class runLocker {
final static int numberOfLockers = 100;
final static int numberOfStudents = 100;

public static void main(String[] args) {
    // TODO Auto-generated method stub
     int LockersToCloseBy = 1;
    boolean[] totalLockersArray = new boolean[numberOfLockers];
    for(int i = 0; i < totalLockersArray.length - 1; i++){
        totalLockersArray[i] = false;
    }


    for(int n= 0; n < totalLockersArray.length ; ++n){
        for(int j = 0; j < totalLockersArray.length; j+=LockersToCloseBy){

            if(totalLockersArray[j] == true)
            {
                totalLockersArray[j] = false;
            }
            else
            {
                totalLockersArray[j] = true;
            }   
        }
        LockersToCloseBy++;
    }

    for(int i = 0; i < numberOfLockers; i++){
        if(totalLockersArray[i] == true){
            System.out.println("Locker " + i + " is open");
        }
    }


    //Currently outputs 1, 4, 9, 16, 36, 49, and 81...
    //Need it to output 1,4,9,16,36,49,81,100
}

}

Author: ddeamaral, 2015-08-20

1 answers

L'array è definito per gli indici [0,..., 99] (100 elementi totali, escluso 100).

Nel seguente codice:

for(int i = 0; i < numberOfLockers; i++){
    if(totalLockersArray[i] == true){
        System.out.println("Locker " + i + " is open");
    }
}

100 non è nemmeno un candidato.


Una soluzione facile potrebbe essere quella di impostare l'array degli armadietti su 101 (numberOfLockers=101), quindi tutti i loop saranno comprensivi di 100.

 5
Author: amit, 2015-08-20 17:36:32