2
私はリンクリストを使用しています。 (リンクリスト用)node
クラスは、このようなものです:node
クラスを使用するクラスstack
、でBufferedWriterが2回目のデータを印刷しないのはなぜですか?
public class node {
String data;
node next;
node previous;
}
、私はプリントの値にメソッド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()
を呼び出すと、第1インスタンスのdata
が出力されます。たとえば、コードの下に、それはB
のdata
を印刷しない:
public static void main(String[] args) {
stack A=new stack();
stack B=new stack();
A.print();
B.print();
}
私は多くのことを検索し、それを数回デバッグましたが、それは完全に実行されます。 2回目の理由でdata
が印刷されない理由を理解できませんでした。
私は印刷 'へお電話という推測をハザードと思います。 close() 'はデフォルトの出力ストリーム' System.out'を閉じます。一度閉じると、再び開くことはできません。 –
@ d.j.brownそれは各インスタンスの1つのストリームのようではありませんか?それはすべてのインスタンスがそれを使用する一般的なストリームですか? – HMD
'System.out'は' System'クラスの静的フィールドであり、それを使用するすべてのクラス/オブジェクトによって共有されます。代わりに 'print.flush()'を使用してください。ストリームを閉じないでください。 –