Ich habe eine einfache "Hausaufgaben" zu tun, aber ich habe ein kleines Problem mit dem Schließen des Eingabestroms gefunden. Um es einfach auszudrücken, muss ich eine Kontakt "List" -Anwendung in Java machen, nur um den Polymorphismus in der richtigen Weise zu verwenden. Also habe ich eine Klasse Kontakt und eine Unterklasse Privat (Kontakt). In beiden Klassen gibt es eine Änderungsmethode, um den Wert der Variablen zu ändern.Stream geschlossen und nicht wieder geöffnet - Java
public void modify() throws IOException {
System.out.println("Previously name: " + name);
System.out.println("Insert new name");
try(InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir)) {
name= in.readLine();
System.out.println("You've changed the name to: "+ name);
System.out.println("Previously surname: " + surname);
System.out.println("Insert new surname");
surname= in.readLine();
System.out.println("You've changed the surname to: "+ surname);
System.out.println("Previously e-mail: " + email);
System.out.println("Insert new e-mail");
email = in.readLine();
System.out.println("You've changed the e-mail to: "+ email); }
}
Dies ist die Kontaktmethode, die nicht Problem
@Override
public void modify() throws IOException {
super.modifica();
System.out.println("Numero di cellulare precedente: " + cell);
System.out.println("Inserire nuovo numero");
try (InputStreamReader ir = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(ir)) {
cell = in.readLine();
System.out.println("Hai cambiato il numero in: "+ cell);
System.out.println("Contatto skype precedente: " + skype);
System.out.println("Inserire nuovo contatto");
skype = in.readLine();
System.out.println("Hai cambiato il contatto in: "+ skype);
}
}
Statt in Privat, ist dies die Überschreibung der Methode nicht erstellen. In der Hauptsache erstelle ich ein Private-Objekt und rufe die Modify-Methode auf. Ich kann Name, Nachname und E-Mail ohne Probleme einfügen, dann löst die Methode eine E/A-Ausnahme aus, weil der Stream geschlossen ist. Ich kann nicht verstehen, warum ich diese Art von Problem habe. Ich denke, dass der Stream durch den Versuch mit Ressourcen im ersten Code geschlossen wird, aber dann im zweiten Code von einem anderen Versuch mit Ressourcen geöffnet wird. Wahrscheinlich stimmt etwas in meiner Idee nicht.
Vielleicht sollten Sie 'java.util.Scanner' lernen. Sie könnten hier beginnen: http://stackoverflow.com/a/11871792/4791599 –
Vielen Dank! Gibt es Unterschiede in Bezug auf die Möglichkeiten und die Speicherverwaltung zwischen Scanner und BufferedReader? – Bondye
Mögliches Duplikat von [Closing BufferedReader und System.in] (http://stackoverflow.com/questions/8203981/closing-bufferedreader-and-system-in) –