首先,我想说这是我在这里发表的第一篇文章,所以如果我做错了,请告诉我。
我有一个名为EmployeeRecord的课程:
void setEmployeeRecord(int empNo, String firstName, String lastName, int age) {
this.setEmpNo(empNo);
this.setFirstName(firstName);
this.setLastName(lastName);
this.setAge(age);
}
我还有基本set/get Node next / Object element
的Node类,带isEmpty(), insert, remove, getTail, size and search
的LinkedQueue类。
在我的GUI中,我有4个带有employeeID,firstName,lastName和age的文本字段。
当我按下插入时,我想将这些值添加到
中 EmployeeRecord er = new EmployeeRecord();
- > er.setEmployeeRecord(num, fN, lN, agei);
然后我想将它们添加到我的LinkedQueue - lq.append(er);
我遇到的问题是当我想将存储在我的LinkedQueue中的信息显示到TextArea中时。 我无法找到一种方法来实现'来自它的数据,目前我有类似的东西:
textArea.setText(lq.Search());
->
//This is the LinkedQueue class
public String Search() {
String msg = "";
Node currentNode = this.head;
while (currentNode != null) {
msg += (currentNode.getElement().toString() + "\n");
currentNode = currentNode.getNext();
}
return msg;
}
我得到的输出是:appletviewer.EmployeeRecord@2e1a6955
如何获得使用ArrayList轻松获得的实际输出?
(我不能使用ArrayList!)
答案 0 :(得分:1)
您必须覆盖toString()
中的 EmployeeRecord
方法。
您在队列中保存了EmployeeRecord对象。打印元素时,将调用对象的toString()函数。如果您不覆盖它,则使用默认值并打印对象的标识符。
尝试这样的事情:
@Override
public String toString() {
return "EmpNo: " + empNo + "\nFirstName: "+ firstName + "\nLastName: " + lastName + "\nAge: "+age;
}
答案 1 :(得分:0)
“currentNode.getElement()。toString()”正在将当前节点的信息转换为字符串,而不是当前节点中的实际信息,在这种情况下两者都是它们不相同,因为当前节点是一种Node对象。 要显示员工的信息,您必须进一步询问当前节点的详细信息,在这种情况下,两个信息都将匹配,因为currentNode.particular是一个Element对象。
因此,您的代码中的修改应该是
msg += (currentNode.name+" "+currentNode.empnum+ "\n");
其中name
和empnum
应替换为员工类的属性。