Wie kann ich input.close() verwenden?
Hallo,
ich habe einen Rechner in Java programmiert, der (fünfmal) "wiederverwendbar" ist, ohne den Code neu zu starten. Nach diesen fünf Berechnungen, möchte ich, dass ein weiteres Programm ausgeführt wird, was aber nur möglich ist, nachdem ich
input.close()
verwende. Aber egal, wo ich
input.close()
platziere, gibt es einen Fehler.
Nun meine Frage: Wo muss ich
input.close()
hinschreiben, damit der Code funktioniert?
Ich bedanke mich schon einmal im Voraus.
import java.util.Scanner;
class Main {
public static void main(String[] args) {
int z = 0;
while (z < 5) {
z = z + 1;
Scanner input = new Scanner(System.in);
System.out.println("1. Zahl: ");
double Zahl1 = input.nextDouble();
System.out.println("Operator: ");
char Operator = input.next().charAt(0);
System.out.println("2. Zahl: ");
double Zahl2 = input.nextDouble();
switch (Operator) {
case '+':
double A1 = Zahl1 + Zahl2;
System.out.println("=" + A1);
break;
case '-':
double A2 = Zahl1 - Zahl2;
System.out.println("=" + A2);
break;
case '*':
double A3 = Zahl1 * Zahl2;
System.out.println("=" + A3);
break;
case '/':
double A4 = Zahl1 / Zahl2;
System.out.println("=" + A4);
break;
default:
System.out.println("Fehler");
}
}
}
}
1 Antwort
Mit dem Aufruf von close wird der Eingabestream geschlossen. Das heißt, wenn du danach erneut versuchst, etwas aus dem Eingabestream zu lesen, wirst du einen Fehler erhalten, da der ja nicht mehr existent ist.
Du darfst die Methode also erst dann aufrufen, wenn du weder das Scanner-Objekt noch den Eingabestream im Programm noch benötigst.
Generell wäre es wohl sinnvoll, nur mit einem Scanner-Objekt zu arbeiten. Das heißt, du kannst die Variable input ruhig schon vor der Schleife definieren.
Scanner input = new Scanner(System.in);
while (z < 5) {
/* ... */
}
input.close();