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
}
}
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.