我对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。它确实有用,只是想尝试更整洁,并学习其他方法。
答案 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(...);
// ...
}