2015-03-03 4 views
0

J'essaie actuellement de concevoir un algorithme CScan pour une application d'ascenseur.JAVA - CScan Algorithm

J'ai besoin de code java qui fera la fonction suivante:

private void MoveDown() { 
    int max = requests[0]; 
    System.out.println("Head currently at: " + head); 
    for (int i = 1; i < 5; i++) { 
     if (requests[i] > max && requests[i] < head) { 
      max = requests[i]; 
      int sum = head - max; 
      System.out.println("Floor: " + max + " | Floors moved: " + sum); 
     } 
    } 

} 

Le code est destiné à calculer le nombre le plus proche de la position de tête. Par exemple, si la tête est à 50 et les requêtes sont (10, 20 30), il faut aller à 30 d'abord, puis 20 puis 10.

Cependant, le mien va 20, 30 et manque 10.

Qu'est-ce que je fais mal?

Répondre

0

Il semble que dans votre boucle vous sautez au premier "plancher" qui est supérieur à max, ce qui dans ce cas est de 10. C'est pourquoi il passe en premier à 20. Votre boucle devrait ressembler plus à ceci. Ensuite, à la fin de cette boucle, vous devez imprimer les planchers déplacés et le nouveau plancher.

+0

Cela n'a pas fonctionné. Tout ce dont j'ai besoin est d'obtenir le nombre le plus proche dans ce tableau qui est inférieur à 50. –

+0

Ici, ça devrait marcher maintenant –