Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > возврат значения - дерево


Автор: ArniLand 22.9.2010, 20:24
На операторе return выдается ошибка - несовместимые типы. Не могу понять, что с чем не совместимо получается в программе. Разъясните пожалуйста, что я не так сделал.

Код программы:



Код

package btree;
import java.io.*;
public class BinaryTree {
    public Node root;
    public BinaryTree()

    {  root = null;  }

    public void insert(int data, String name, String surname,
            String course, String ticket, String army){

        Node n = new Node(data, name, surname, course, ticket, army);
        if (root == null){
            root = n;
        }
        else {
         Node current = root;
         Node parent;
         while(true) {
             parent = current;
             if(data < current.data){
                 current = current.left;
                }
                if (current == null) {
                    parent.left = n;
                    return;
                }
          else {
                current = current.right;
                if(current == null){
                    parent.right = n;
                    return;

                }
              }
           }
       }
    }
       public BinaryTree find(int key){
       Node current = root;

       while(current.data != key){
           if(key < current.data){
               current = current.left;
           }
           else {
                current = current.right;
           }

           if(current == null) {
               return null;
           }

       }
       return current; //ошибку выдает на этой строке
    }

}
 
class bTreeApp {
    public static void main(String[] args ) {
        BinaryTree theTree = new BinaryTree();
        theTree.insert(1, "vasa", "pupkin", "3", "456987", "Yes");
        theTree.insert(2, "ivan", "ivanov", "2", "789898", "No");
        theTree.insert(4, "dima", "vengel", "3", "7896546", "No");
    }
}

class Node {
        Node left;
        Node right;
        int data;
        String name;
        String surname;
        String course;
        String ticket;
        String army;
        public Node(int data, String name, String surname, String course, String ticket, String army){
            this.data = data;
            this.name = name;
            this.surname = surname;
            this.course = course;
            this.ticket = ticket;
            this.army = army;
        }
    }

Автор: le_chat 22.9.2010, 21:03
Код

       public BinaryTree find(int key){
           Node current = root;
          ...
        return current;
    }


У вас в заголовке метода указан возвращаемый класс BinaryTree, а возвращается current, у которого класс Node. Должен возвращаться либо класс, указанный в заголовке, либо его наследник.
Обычно среда разработки по таким ошибкам выводит подсказку.

Автор: ArniLand 23.9.2010, 08:06
как мне поступить? Перенести функцию в класс Node?

Автор: wedens 23.9.2010, 10:13
Цитата(ArniLand @ 23.9.2010,  08:06)
как мне поступить? Перенести функцию в класс Node?

прочитать первые 2 главы любой книги по java (да и даже не по java)

Автор: nc30 23.9.2010, 11:39
По-поводу литературы http://forum.vingrad.ru/index.php?showtopic=34063&view=findpost&p=251985 можно посмотреть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)