Java non compris 100 dans 100 casiers


MA sortie souhaitée est locker 1,4,9,16,36,49,81 ET 100. J'essaie de trouver quels casiers après l'envoi d'un étudiant et ouvre chaque casier. (Tous sont fermés par défaut) et ouvre chaque casier. ensuite, l'étudiant numéro 2 va tous les autres casier, et si elle est ouverte, fermez-la, et si il est fermé, ouvrez-le. L'étudiant trois fait la même chose, mais avec un casier sur trois. Tout le chemin jusqu'à l'étudiant de 100. Je sais que la sortie devrait être tous les nombres carrés mais je ne peux pas obtenir le 100 pour se montrer. Ce qui me manque? Je mets 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

Votre tableau est défini pour les indices [0,...,99] (100 éléments au total, à l'exclusion de 100).

Dans le code suivant:

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

100 n'est même pas candidat.


Une solution facile pourrait être de définir le tableau des casiers à 101 (numberOfLockers=101), de sorte que toutes les boucles seront incluses dans 100.

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