为什么 BufferedWriter 没有第二次打印数据?
Why BufferedWriter doesn't print data for the 2nd time?
我正在使用链表。 node
class(对于链表)是这样的:
public class node {
String data;
node next;
node previous;
}
在使用node
class的classstack
中,我写了一个方法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
class 的 2 个实例并调用 print()
时,它只打印第一个实例的 data
。例如,在下面的代码中,它不会打印 B
的 data
:
public static void main(String[] args) {
stack A=new stack();
stack B=new stack();
A.print();
B.print();
}
我找了很多,也调试了好几次,运行完美。但无法弄清楚为什么它没有第二次打印出 data
。
您已关闭 System.out
,这是您通常不应该做的事情。虽然在 Java 中使用 try-with-resource 语法通常是最佳实践,但在处理 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();
}
}
我正在使用链表。 node
class(对于链表)是这样的:
public class node {
String data;
node next;
node previous;
}
在使用node
class的classstack
中,我写了一个方法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
class 的 2 个实例并调用 print()
时,它只打印第一个实例的 data
。例如,在下面的代码中,它不会打印 B
的 data
:
public static void main(String[] args) {
stack A=new stack();
stack B=new stack();
A.print();
B.print();
}
我找了很多,也调试了好几次,运行完美。但无法弄清楚为什么它没有第二次打印出 data
。
您已关闭 System.out
,这是您通常不应该做的事情。虽然在 Java 中使用 try-with-resource 语法通常是最佳实践,但在处理 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();
}
}