我正在使用链表。 node
类(对于链表)是这样的:
public class node {
String data;
node next;
node previous;
}
在使用stack
课程的班级node
中,我编写了一个方法print()
来打印值,print()
如下所示:
void print() throws IOException{
try(BufferedWriter print=new BufferedWriter(new OutputStreamWriter(System.out))){
node temp=this.getFirstNode();
while(temp!=null){
print.write(temp.getData());
temp=temp.getNext();
}
print.close();
}
}
当我创建stack
类的2个实例并调用print()
时,它只打印第一个实例的data
。例如,在下面的代码中,它不会打印B
的{{1}}:
data
我经常搜索并调试了几次,它运行得很好。但无法弄清楚为什么它不会第二次打印public static void main(String[] args) {
stack A=new stack();
stack B=new stack();
A.print();
B.print();
}
。
答案 0 :(得分:4)
您已关闭System.out
,这是您通常不应该做的事情。虽然使用try-with-resource语法通常是Java中的最佳实践,但在处理System.out
时,它只是多余的(读取:通常是错误的):
void print() throws IOException{
BufferedWriter print = new BufferedWriter(new OutputStreamWriter(System.out));
node temp = this.getFirstNode();
while(temp != null){
print.write(temp.getData());
temp = temp.getNext();
}
}