Wie andere bereits gesagt haben, müssen Sie bei E / A-Klassen "Schließen" aufrufen. Ich werde hinzufügen, dass dies ein ausgezeichneter Ort ist, um den Versuch zu nutzen - endlich ohne Fang zu blockieren, so:
public void readShapeData() throws IOException {
Scanner in = new Scanner(System.in);
try {
System.out.println("Enter the width of the Rectangle: ");
width = in.nextDouble();
System.out.println("Enter the height of the Rectangle: ");
height = in.nextDouble();
} finally {
in.close();
}
}
Dies stellt sicher, dass Ihr Scanner immer geschlossen ist, und gewährleistet eine ordnungsgemäße Bereinigung der Ressourcen.
Entsprechend können Sie in Java 7 oder höher die Syntax "Try-with-Resources" verwenden:
try (Scanner in = new Scanner(System.in)) {
...
}
Scanner
die Warnung geschlossen und stummgeschaltet, es wird jedoch auch geschlossen,System.in
was normalerweise nicht wünschenswert ist.