Проблемы дают возможность добавить более одной записи в двоичное дерево? Прямо сейчас код позволяет только один - PullRequest
0 голосов
/ 22 июня 2011

В коде ниже.Я пытаюсь разрешить пользователю вводить записи в программу.Прямо сейчас они могут добавить только одну запись в программу.Как я могу отредактировать его, чтобы у пользователя была возможность ввести еще одну запись в программу.

Пример вывода: введите ID: 444 Введите FName: John Введите Lname: Thompson

Хотите ввести другую запись Y / N? Y Введите ID: 1 Введите FName: Gail Введите Lname: Jennings

Хотите ли вы ввести еще одну запись? Да / Нет? N

Если нажать «Да», я хочу добавить собранные данные в двоичное дерево и позволить пользователю ввести другой идентификатор.Как я могу это сделать?

import java.util.Scanner;

class clubmember {

    public static void main(String[] args) {

        int id;
         String fname, lname;
         Scanner input = new Scanner(System.in);

         System.out.println("Enter ID>");
         id = input.nextInt();

         System.out.println("Enter first name >");
         fname = input.next();

         System.out.println("Enter last name >");
         lname = input.next();



         BinaryTreeTest foo = new BinaryTreeTest(); 


           Person per1 = new Person(id, fname, lname);
           BinaryTreeTest.Node nod1 = new BinaryTreeTest.Node(per1);

           Person per2 = new Person(734, "Smith", "Rick");
           Person per3 = new Person(324, "Gates", "Jill");

           foo.insert(nod1, per2);
           foo.insert(nod1, per3);

           foo.printInOrder(nod1);


    }
}



public class BinaryTreeTest {

  public static void main(String[] args) {

    new BinaryTreeTest().run();
  }

  // Node Class
  static class Node {
    Node left;

    Node right;

    Person value;

    public Node(Person value) {
      this.value = value;
    }
  }

  public void run() {

  }

  public void insert(Node node, Person value) {
    if (value.getId() < node.value.getId()) {
      if (node.left != null) {
        insert(node.left, value);
      } else {
        System.out.println("  Inserted " + value + " to left of "
            + node.value);
        node.left = new Node(value);
      }
    } else if (value.getId() > node.value.getId()) {
      if (node.right != null) {
        insert(node.right, value);
      } else {
        System.out.println("  Inserted " + value + " to right of "
            + node.value);
        node.right = new Node(value);
      }
    }
  }

  public void printInOrder(Node node) {
    if (node != null) {
      printInOrder(node.left);
      System.out.println("  Traversed " + node.value);
      printInOrder(node.right);
    }
  }
}


public class Person {
    private final int id;
    private final String firstName;
    private final String lastName;


    public Person(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public int getId() {
        return id;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    @Override
    public String toString() {
        return String.valueOf(id) + ": " + firstName + " " + lastName;
    }
}

Ответы [ 2 ]

1 голос
/ 22 июня 2011

Рассмотрите возможность использования цикла do { ... } while (). Что-то вроде

boolean more;
do {
  insertOneUser();
  System.out.println("Add another?");
  more = "y".equals(input.next().toLowerCase());
} while (more);
0 голосов
/ 22 июня 2011

вам требуется использовать класс коллекции для хранения созданных объектов .. Я предлагаю вам использовать TreeSet для хранения значений .. (вам нужно изменить метод isert, чтобы добавить узел в TreeSet.

Это должно дать вам желаемый результат.

...