从用户输入中搜索人员

时间:2014-05-20 10:22:05

标签: java binary-tree binary-search-tree

我对Java很新,我在二叉树中搜索一个人时遇到了问题。我想要它,以便输入的数字将显示该人(用户ID,姓名等)。

到目前为止,这就是我所拥有的:

BinaryTree Tree = new BinaryTree();
BinaryNode NodeAt;

int TypeIn;
Scanner user_input = new Scanner(System.in);   

Person PersonA = new Person(1,"PersonFirstName","PersonLastName","PersonPassword");
//Above repeated but PersonA becomes PersonB etc.

Tree.Insert(PersonA);
//Above repeated but PersonA becomes PersonB etc.

Tree.InOrder(MyTree.gRoot());

TypeIn = user_input.nextInt()

if (TypeIn == 1) {
     NodeAt = MyTree.Find(PersonA); 
     System.out.println("NodeAt.gKey()); 
}
// Repeat for other people (1 becomes 2, PersonA becomes Person B etc.)

还有一个与此相关联的Person类。

如果有更简单或更合适的方式向用户展示,我当时很好奇。我真的不想复制if语句(if (TypeIn == 1))并将TypeIn更改为2,3,4,5等,将PersonA更改为PersonB。它确实有用,只是想尝试更整洁,并学习其他方法。

2 个答案:

答案 0 :(得分:0)

您可以使用switch语句,而不是重复ifs

答案 1 :(得分:0)

我会在BinaryTree类中实现一个方法,如下所示:

/**
 *
 * Search and returns the first node in the tree whose id match the passed id
 *
 * @param id of the searched person
 * 
 * @return Person the found person 
 *                or the special value Person#UNKOWN_PERSON if no matching id found
 */
public Person findById(int id) {
     // ...


}

在您的主要代码中,您将拥有:

Person p = MyTree.findById(user_input.nextInt());

以下是UNKNOWN_PERSON的定义:

public class Person {
    public static final Person UNKNOWN_PERSON = new Person(...);

    // ...
}