Um die skipping nextLine() issue zu bekommen, und den Code sauberer zu machen, hat ich ein paar Mal den folgenden Ansatz verwendet:Garbage Collection von unclosed Scanner
private String getInput() {
return new Scanner(System.in).nextLine();
}
Dieser jeder Produktionscode nicht gewesen sein, nur kleine Projekte Ich habe mich also nicht viel darum gekümmert, ob dies zu Leistungsproblemen führen könnte, da ich den Ansatz sehr praktisch fand. Ich verwende diese Methode sehr gerne für alle Eingaben und parse den Rückgabewert.
Auf die Frage - ist das eine sehr schlechte Praxis? Ich fühle mich nicht gut, den Scanner nicht zu schließen, aber da das Objekt außer Reichweite ist, habe ich gedacht, dass das Scanner-Objekt Müll gesammelt und daher auch geschlossen werden sollte. Wie geht das mit dem GC um?
Könnten Sie den Fehler oben genauer erklären, ich bekomme das Problem nicht? Und natürlich verstehe ich es ineffizient, aber der Leistungsbeeinflussung muss _minimal_ sein. –
Überprüfen Sie das Schließen der Methode eines Scanners, wenn Sie einen Scanner schließen, schließt es auch die Quelle, die System.in hier ist, so dass Sie den Eingabestrom nicht mehr lesen können –
Wenn Sie es ein paar Mal tun, sollte die Wirkung sein minimal, es hängt von Ihrem Anwendungsfall ab –