2015-03-03 2 views
0

В настоящее время я пытаюсь разработать алгоритм CScan для приложения лифта.JAVA - CScan Algorithm

Мне нужен код Java, который будет делать следующую функцию:

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); 
     } 
    } 

} 

Код предназначается для вычисления ближайшего числа от положения головы. Так, например, если голова равна 50, а запросы (10, 20 30), она должна перейти к 30 сначала, затем к 20 затем 10.

Однако мой ход идет 20, 30 и пропускает 10.

Что я делаю неправильно?

ответ

0

Похоже, что в вашей петле вы прыгаете на первый «пол», который больше, чем макс, что в данном случае равно 10. Так вот почему он переходит к 20 в первую очередь. Ваш цикл должен выглядеть более как это.

int max = 0; 
for(int i =0; i<requests.length;i++){ 
    if(requests[i]>max && requests[i] < head){ 
     max = requests[i]; 
    } 
} 
System.out.println("Floor: " + max + " | Floors moved: " + (head-max)); 

Затем в конце этого цикла вы должны распечатать пол и новый пол.

+0

Это не сработало. Все, что мне нужно - это добраться до ближайшего номера в этом массиве, который меньше 50. –

+0

Здесь он должен работать сейчас –