Hallo!
Habe nachfolgendes Programm geschrieben.
Hierin sollen 2 Werte eingegeben werden. Wenn der Benutzer die Werte falsch eingibt, z. B. ein . anstatt , verwendet für die Darstellung seiner Wunschzahl, soll das Programm selbst einen Wert festsetzen.
Wenn das bei der 2. Eingabe des Benutzers passiert, so verwendet das Programm richtigerweise die vom Benutzer gemachte 1. Eingabe.
Wenn der Benutzer jedoch schon bei der 1. Eingabe einen Fehler macht, so hat er beim 2. Wert nicht mehr die Möglichkeit, eine Eingabe zu machen.
Scheinbar steckt die fehlerhafte erste im Scanner-Objekt, während die 2. Zahl abgefragt wird. Ich habe bei Scanner aber keine Methode gefunden, die den Inhalt eines Scanner-Objektes leert. Aber hier zunächst das Minimalprogramm:
[Edit Ebenius]Damit keiner Augenkrebs bekommt, hab ich mal die JAVA-Tags noch reineditiert.
Gibt es eine Möglichkeit, den Inhalt eines Scanner-Objektes zu leeren oder sollte das anders gelöst werden?
Viele Dank!
mefistochen
Habe nachfolgendes Programm geschrieben.
Hierin sollen 2 Werte eingegeben werden. Wenn der Benutzer die Werte falsch eingibt, z. B. ein . anstatt , verwendet für die Darstellung seiner Wunschzahl, soll das Programm selbst einen Wert festsetzen.
Wenn das bei der 2. Eingabe des Benutzers passiert, so verwendet das Programm richtigerweise die vom Benutzer gemachte 1. Eingabe.
Wenn der Benutzer jedoch schon bei der 1. Eingabe einen Fehler macht, so hat er beim 2. Wert nicht mehr die Möglichkeit, eine Eingabe zu machen.
Scheinbar steckt die fehlerhafte erste im Scanner-Objekt, während die 2. Zahl abgefragt wird. Ich habe bei Scanner aber keine Methode gefunden, die den Inhalt eines Scanner-Objektes leert. Aber hier zunächst das Minimalprogramm:
Java:
import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("T eingeben!");
double T;
try {
T = in.nextDouble();
}
catch (InputMismatchException e) {
System.out.println("Die Eingabe war inkorrekt. T wird auf 1 gesetzt.");
T=1.0;
}
System.out.println("v eingeben!");
double v;
try{
v=in.nextDouble();
} catch(InputMismatchException e){
System.out.println("Die Eingabe war inkorrekt. v wird auf 7 gesetzt.");
v=7.0;
}
System.out.println("T hat den Wert "+T);
System.out.println("v hat den Wert "+v);
}
}
Gibt es eine Möglichkeit, den Inhalt eines Scanner-Objektes zu leeren oder sollte das anders gelöst werden?
Viele Dank!
mefistochen
Zuletzt bearbeitet von einem Moderator: