Home - JAVA-Tutorials - Das Schließen eines Scanners löst. aus Lesezeit: 1 Minute Benutzer2172205 Ich schreibe ein RPG-Kampfsystem von Grund auf in Java, ehrgeizig, oder? Nun, ich habe Probleme. Das ist mein Code: void turnChoice() { ("What will you do? Mein java scanner funktioniert nicht? (Programmieren). Say (Fight) (Run) (Use Item)"); Scanner turnChoice = new Scanner(); switch (xtLine()) { case ("Fight"): Combat fighting = new Combat(); (); default:} ();} Wenn es diesen Punkt im Code erreicht, erhalte ich: Was werden Sie tun? Sagen (Kampf) (Laufen) (Gegenstand verwenden) Ausnahme im Thread "main" Keine Zeile gefunden at (Unbekannte Quelle) bei Combat. turnChoice() Die Klasse heißt Combat, ich möchte nur, dass sie die Möglichkeit bietet, zu kämpfen oder zu rennen oder Gegenstände zu verwenden. Ich versuche zuerst nur die Kampfmethode. Bitte helfen Sie mir, ich bin neu in Java, also machen Sie die Dinge nach Möglichkeit nicht zu kompliziert. Beim Lesen mit Scanner von, du solltest keine schließen Scanner Instanzen, weil das Schließen eines schließt und wenn Sie Folgendes tun, NoSuchElementException wird geworfen.
Und ich scheine nicht viele Nachteile in diesem Ansatz zu sehen. Kommentar nicht vergessen. Blrp
Ich habe vage Erinnerungen an seltsame, nicht diagnostizierbare Probleme vor langer Zeit bei der Verwendung derselben Scanner von zweimal, also benutze ich das (auch wenn Sie wahrscheinlich nur einen Scanner für die Dauer des Programms verwenden sollten):
static String input() {
try {
return new Scanner(). nextLine();} catch (NoSuchElementException e) {
throw e;}}
Aus irgendeinem Grund funktioniert dies ohne Warnungen, während Eclipse sich beschwert, wenn ich den Catch-Throw nicht mache Resource leak: '
public static void main ( String [] args) { Scanner scan = new Scanner ( System. in); try { while ( scan. hasNextLine ()){ String line = scan. nextLine (). toLowerCase (); System. out. println ( line);}} finally { scan. close ();}} Nur gefragt, wie ich kann, beenden Sie das Programm, nachdem ich Sie abgeschlossen haben Eingabe der Eingänge? Als scanner würde Sie weiterhin nach einigen "Enter" - vorausgesetzt, ich werde weiterhin die Eingabe-Eingänge... Ich habe versucht: if ( scan. nextLine () == null) System. exit ( 0); und if ( scan. nextLine () == "") System. exit ( 0); Sie hat nicht funktioniert.... Korrekte Methode zum Schließen verschachtelter Streams und Writer in Java [duplicate] - ViResist. Das Programm läuft weiter und ruiniert mit der ursprünglichen Absicht,
Im finally Klausel verwenden IOUtils oseQuietly(bWriter); oseQuietly(oWritter); Codeschnipsel unten. BufferedWriter bWriter = null; OutputStreamWriter oWritter = null; try { oWritter = new OutputStreamWriter( tOutputStream(), "utf-8"); bWriter = new BufferedWriter( oWritter); ( xml);} finally { oseQuietly(bWriter); oseQuietly(oWritter);} Der Kollege spricht einen interessanten Punkt an, und es gibt Gründe, so oder so zu argumentieren. Ich persönlich würde das ignorieren RuntimeException, da eine ungeprüfte Ausnahme einen Fehler im Programm anzeigt. Wenn das Programm falsch ist, beheben Sie es. Sie können ein schlechtes Programm zur Laufzeit nicht "behandeln". Tom Hawtin – Tackline Das ist eine überraschend unangenehme Frage. Scanner schließen java 2. (Auch wenn man davon ausgeht acquire; try { use;} finally { release;} Code stimmt. ) Wenn die Konstruktion des Decorators fehlschlägt, schließen Sie den zugrunde liegenden Stream nicht. Daher müssen Sie den zugrunde liegenden Stream explizit schließen, sei es nach der endgültigen Verwendung oder, schwieriger, nachdem die Ressource erfolgreich an den Dekorateur übergeben wurde).
Hallo, kurz: ich habe vor kurzem erst mit Java angefangen und jetzt gibt es ein kleines Problem. Ich verwende eine Scanner um eine Zahl einzugeben. Wenn ich ihn aber schließe, wird mir in der nächsten Schleife, bei der Ich Namen über den Scanner einlesen will ein Fehler ausgegeben. Wenn ich den Scanner nicht schließe, funktioniert es. Aber eigentlich sind es ja verschiedene Scanner??? package spiel; import; public class Rechner { static int spieleranzahl; static String[] spieler; public static void main(String[] args) { spielerzahl();} public static void spielerzahl() { Scanner spielerzahl = new Scanner(); ("Wie viele Spieler? "); spieleranzahl = xtInt(); // (); spieler = new String[spieleranzahl]; for (int i = 1; i <= spieleranzahl; i++) { ("Gebe den Namen des " + i + ". Spielers ein:"); Scanner spielername = new Scanner(); spieler[(i - 1)] = ();}}} Wenn "();" auskommentiert ist, funktioniert es. Wo liegt mein Fehler? Java | Wie kann ich den Scanner schließen? (Computer, Programmieren, Informatik). MfG Alex
Eine Sache, die mir zumindest bei diesem speziellen Beispiel auffällt, ist, dass die inneren Streams scheinbar nur FileNotFoundExceptions auslösen. Was zu implizieren scheint, dass es technisch gesehen keine Notwendigkeit gibt, sich Gedanken über das Schließen zu machen, wenn sie fehlschlagen. Hier schrieb ein Kollege: Technisch gesehen sollte das Schließen des äußersten Streams (oos) ausreichen, wenn es richtig implementiert wurde. Aber die Umsetzung scheint mangelhaft. Beispiel: BufferedOutputStream erbt close() von FilterOutputStream, was es wie folgt definiert: 155 public void close() throws IOException { 156 try { 157 flush(); 158} catch (IOException ignored) { 159} 160 (); 161} Wenn jedoch flush() aus irgendeinem Grund eine Laufzeitausnahme auslöst, wird () niemals aufgerufen. Daher scheint es "am sichersten" (aber hässlich) zu sein, sich hauptsächlich um das Schließen von FOS zu kümmern, wodurch die Datei geöffnet bleibt. Was gilt als der beste Ansatz zum Schließen verschachtelter Streams, wenn Sie unbedingt sicher sein müssen?
Materialzusammensetzung Obermaterial: 94% Polyester, 6% Elasthan Maschinenwäsche Rückgabegarantie mit kostenlosem Rückversand Gesetzliche Gewährleistung
Die einzelnen Teile lassen sich unkompliziert kombinieren und orientieren sich an zeitgemäßen Schnitten und Farbkombinationen. Giorgio Campagnolo stattete das Familienunternehmen früh mit modernen Fertigungsanlagen aus. Das ermöglichte die Entwicklung und Produktion von eigenen Funktionstextilien. Dazu gehören zum Beispiel das Climaprotect-Gewebe, eine besondere thermische Beschichtung und Materialien mit schnell trocknender Dry Function. Ziel von CMP ist es bis heute, die bestehende Produktpalette stetig zu verbessern und zu perfektionieren. CMP Fleecejacke für kaufen | BAUR. Dazu gehört auch eine möglichst schadstoffarme und umweltschonende Herstellung. Entdecken Sie jetzt Outdoorbekleidung von CMP im Online Shop von Gigasport! close
JETZT EINLÖSEN close Gutscheincode: Gültig von 9. bis 22. Mai 2022 auf Artikel aus dem Bergsport-Sortiment und bereits reduzierte Artikel. Ausgenommen Serviceleistungen, Set-Angebote, Preis- & Wert-Angebote, Wanderkarten/Bücher und Sport-/Sonnenbrillen. Nicht kombinierbar mit anderen Aktionen. GS22-15OUTDOOR Code kopieren CMP – Online Shop bei Gigasport CMP Outdoormode verbindet moderne Technologien mit sportiven Designs und hohem Tragekomfort. Cmp fleecejacke damen große grosse frayeur. Die Oberteile, Hosen und Jacken der Marke überzeugen mit bequemen Schnitten und idealen Passformen. Sie bieten ihren Trägern bei Outdooraktivitäten wie Camping, Wandern oder Radfahren maximale Bewegungsfreiheit. Die einzelnen Kollektionen bestehen aus atmungsaktiven Textilien und sorgen dadurch stets für ein ausgeglichenes Körperklima. Dazu kommt bei den Outdoorjacken ein zuverlässiger Schutz vor Nässe und Kälte. Sie trocknen schnell und halten warm und trocken. Dafür sorgen innovative Materialien wie Fleece oder mikroporöse Softshell-Beschichtungen.