2014-10-26 2 views
0

У меня есть класс, который реализует Comparator, но n1 и n2 "могут быть только null". Вот класс:Почему эти переменные могут быть пустыми?

public class MyComparator implements Comparator<Node>{ 

     public int compare(Node n1, Node n2) { 

      int n1Links = 0; 
      int n2Links = 0; 

      while(n1 != null){ 
       n1Links++; 
       n1 = n1.previous; 
      } 
      while(n2 != null){ 
       n2Links++; 
       n2 = n2.previous; 
      } 

      int n1count = 0; 
      for (int i = 0; i < n1.word.length(); i++){ 
       if (n1.word.charAt(i) != target.charAt(i)){ 
        n1count++; 
       } 
      } 

      int n2count = 0; 
      for (int i = 0; i < n2.word.length(); i++){ 
       if (n2.word.charAt(i) != target.charAt(i)){ 
       n2count++; 
       } 
      } 

      int n1Total = n1Links + n1count; 
      int n2Total = n2Links + n2count; 

      if(n1Total > n2Total){ 
       return 1; 
      } 
      else if(n1Total < n2Total){ 
       return -1; 
      } 

      return 0; 
     }  
    } 

Позже у меня есть это:

Queue<Node> queue = new PriorityQueue<Node>(1000, new MyComparator()); 

, который использует компаратор, а затем я начинаю предлагать узлы в очереди сразу после.

Программа - это игровой решатель слов, который призван найти способ получить от слова X до слова Y, только изменяя по одной букве за раз. Точка компаратора должна помочь с некоторой сортировкой.

Любая идея, почему n1 и n2 могут быть только нулевыми?

Спасибо!

ответ

0

Я думал, что что-то концептуальное хватает, но это была простая ошибка:

как я увеличиваем n1Links и n2Links, я в конечном итоге установить n1 и n2 быть нулевым.

Поэтому, когда я пытаюсь взять размер n1 или n2, конечно, они будут пустыми.

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