2014-09-30 2 views
-2

Мой DEQUEUE метод:Исключение нулевого указателя в то время как dequeing очереди в Java

public T deQueue(){ 
     if(isempty()){ 
      System.out.println("Queue is empty, cant dequeue"); 
     }else if(front==rear){ 
      T value=queue[front]; 
      front=-1; 
      rear=-1; 
      return value; 
     }else{ 
      T value=queue[front]; 
      front++; 
      return value; 
     } 
     return null;  
    } 

Здесь я возвращаюсь утратившим в последней строке. Что я должен вернуть вместо нулевого?

+0

Что вы хотите вернуть? – Mysterion

+0

Я хочу вернуть значение dequeued. T-, который является общим типом –

+0

Вместо метода, я думаю, вам следует больше сосредоточиться на вызове метода и добавить нулевую проверку перед использованием результата метода. –

ответ

1

Вы должны добавить null check после вызова метода, чтобы исключить исключение нулевого указателя.

Object object=newQueue.deQueue(); 
if(object!=null){ 
    System.out.println(object); 
} 
+0

для каждого отображения элементов dequeue, мне нужно создать столько объектов? –

+0

Нет, вы можете повторно использовать объект, если хотите. ;) –

0

Вы должны вернуть нуль в следующем вызове

if(isempty()) 
{ 
    System.out.println("Queue is empty, cant dequeue"); 
} 

Null здесь ничего не значит DEQUEUE, и что будет охватывать все случаи, суть в том, что больше не Dequeue не возможно в очереди опорожняется. Вы хотите, чтобы другой результат показывался, когда очередь пуста, и нет ничего, что можно было бы удалить. В идеале вызывающая программа может выполнить нулевую проверку и прекратить удаление, когда возвращается null. Фактически, ваша текущая программа делает то же самое, только на мой взгляд, если цикл - лучшее место для возвращения, поскольку вы возвращаетесь из другого тоже

Пожалуйста, дайте мне знать, если ваше требование отличается от предложенного.

0

Вам не нужно указывать обратный нуль. if - else if - else все случаи уже обработаны.

+0

Только половина правды: в первом блоке 'if' нет' return'. Таким образом, требуется окончательный 'return'. Кроме того, я думаю, вопрос в том, что вернуть, если нет объекта типа 'T'. – cfi