2016-02-22 5 views
0

У меня есть класс Section с несколькими методами, включая методы get_key() и get_angle(). Элементы типа Раздел добавляются в хэш-таблицу, реализованную в классе Hashtable. Согласно моей задаче, я должен удалить такие элементы из хэш-таблицы, которые имеют большее значение функции get_angle(), чем given_value.Удалить элементы из hashtable (java)

class Hashtable{ 
private Section[] hash_array; //array of cells of the hashtable 
public int size; 

public void remove_given(double given_value) 
{ 
    for(int i = 0; i < size; i++) 
    { 
     if (hash_array[i] != null) 
     { 
      double value = hash_array[i].get_angle(); //value of needed function to compare 
      if (value > given_value) 
      { 
       int key_ = hash_array[i].get_key(); //get key for the item in order to delete it  
       Delete(key_); //delete item  
      } 
     }   
    } 
} 

} 

Но метод не удаляет элементы. Я проверил метод Delete() отдельно, и он работает просто отлично, а также другие методы, вызванные этим методом. Мне действительно нужно понять это. Поэтому я буду благодарен за вашу помощь.

+0

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

+0

Я не вижу, где вы инициализируете размер? Он должен быть основан на размере хэша. – Dave

+0

Я инициализирую в конструкторе класса Hashtable. Я могу добавить эту часть кода, если вам нужно. –

ответ

0

Отладить свой код, вводит ли он для цикла. Как вы инициализируете значение переменной size? Если вы забудете инициализировать его по умолчанию, он будет равен нулю. Лучше получить размер от hash_array.length.

+0

Он входит в цикл. Я думаю, проблема внутри. –

+0

Я инициализирую размер через конструктор класса Hashtable –

0

С одной стороны, вы используете неинициализированный глобальный var, size, размер, используемый в цикле for, должен быть размером коллекции Hash. Также как инициализируется Хэш? Он содержит то, что вы думаете? Я бы выполнил вышеупомянутое предложение, чтобы выполнить код с помощью отладчика, возможно, ключи не так, как вы думаете, они ...

+0

Даже если я напишу hash_array.length вместо переменного размера, он не решает мою проблему. В любом случае спасибо за помощь. –

+0

Ответ изменен, см. Выше. – Dave

+0

Хорошо, я попробую. Спасибо за помощь. –

Смежные вопросы