为什么BufferedWriter第二次不打印数据?

时间:2016-10-18 08:17:55

标签: java bufferedwriter

我正在使用链表。 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(); }

1 个答案:

答案 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();
    }
}