В моем классе драйвера:

for (systemClock = 0; systemClock < 200; systemClock = (systemClock + 1)){
        if(((inputQueue.query()).arrivalTime()) == systemClock)
            System.out.println(((inputQueue.remove()).removalTime()));
    }

В классе вакансии:

public int arrivalTime()
{
    return arrivalTime;
}

Моя проблема во второй строке кода.

if(((inputQueue.query()).arrivalTime()) == systemClock)

В классе мы сделали базовый QueueObject с методом query(), который возвращает объект, найденный в ПЕРЕДНЕЙ ЧАСТИ очереди. Каждый объект - это задание, в котором есть различные переменные и методы (все, что имеет значение в этом случае, - это «Время прибытия» этого объекта). Я пытаюсь заставить эту строку кода вернуть объект и вызвать метод arrivalTime() / узнать время прибытия от этого конкретного объекта.

Изменить: я получаю ошибку компиляции "не удается найти символ - метод прибытияTime ()"

Редактировать решение: извините за путаницу / плохие парни. Я прошу прощения. Вот решение, с которым я работал. Мне пришлось преобразовать объект, извлекаемый из очереди, как объект Job.

if((((Job)inputQueue.query()).arrivalTime()) == systemClock)
-1
Stephen Gilardi 16 Мар 2013 в 02:31
Эээ ... В чем тогда ваш вопрос?
 – 
millimoose
16 Мар 2013 в 02:36
Вы не объяснили, в чем проблема с опубликованным вами кодом. Вы говорите: «Моя проблема находится во второй строке кода» - какая «проблема»? Вы тоже не задали вопрос.
 – 
Ken White
16 Мар 2013 в 02:37
Стреляй в меня плохо! Проблема в том, что я получаю сообщение об ошибке при компиляции. Он выделяет эту строку и сообщает, что не может найти символ "метод прибытияTime ()".
 – 
Stephen Gilardi
16 Мар 2013 в 02:45
Помечен ли метод arrivalTime() как закрытый? Если да, то это должно быть публично. И какой тип возвращает метод? Он должен иметь тот же тип, что и systemClock, и помните, что вы можете использовать == только с числами (int, long, double, ...). Если тип не сопоставим с ==, вам необходимо создать метод compareTo() или equals().
 – 
Barranka
16 Мар 2013 в 03:04
Я включил метод времени прибытия, найденный в объекте задания выше. Оба являются простыми int, поэтому я не думаю, что это проблема.
 – 
Stephen Gilardi
16 Мар 2013 в 03:16

1 ответ

Лучший ответ

Попробуйте убрать лишние скобки и (на всякий случай) использовать неравенство:

if (inputQueue.query().arrivalTime() >= systemClock) {
    // ...
}

Я предполагаю, что ваш метод query() возвращает объект Job (если это не так, значит проблема с вашим дизайном Queue).


Итак, ваша проблема в том, что символ не найден.

Несколько советов:

  1. помечен ли метод прибытияTime () как закрытый? Если да, то это должно быть публично.
  2. Какой тип возвращает метод? Он должен иметь тот же тип, что и systemClock, и помните, что вы можете использовать == только с числами (int, long, double, ...). Если тип не сопоставим с ==, вам нужно создать метод compareTo () или equals ()
0
Barranka 16 Мар 2013 в 03:14
Метод запроса работает именно так, как должен. Мне нужно, чтобы он возвращал метод только в том случае, если время прибытия EQAUL TO (==) системные часы. Думаю, это не сработает.
 – 
Stephen Gilardi
16 Мар 2013 в 02:44
Это происходит, когда вы не задаете полный вопрос
 – 
Barranka
16 Мар 2013 в 03:13
Я прошу прощения. Я обновил исходный вопрос своей проблемой.
 – 
Stephen Gilardi
16 Мар 2013 в 03:17
Да, метод общедоступен, и обе переменные являются целыми числами.
 – 
Stephen Gilardi
16 Мар 2013 в 03:23
Позвольте мне быстро перефразировать вопрос, чтобы упростить мою проблему. Допустим, у нас есть массив, заполненный объектами Student. Как мне удалить ученика из массива и использовать для него метод getAge?
 – 
Stephen Gilardi
16 Мар 2013 в 03:24