falsche Eingabe abfangen

Kevinpaolo

Mitglied
import java.util.Scanner;
import java.util.Random;

public class Aufgabe7TeilB {
public static void main(String[] args) {
System.out.println("Bitt denken Sie sich eine Zahl aus!");
Scanner Scanner = new Scanner(System.in);
System.out.println("Bitte geben Sie eine untere Grenze ein: ");
int A = Integer.parseInt(Scanner.nextLine());
System.out.println("Bitte geben Sie eine obere Grenze ein: ");
int B = Scanner.nextInt();
int i = 0;
while (B >= A) {
i++;
Random generator = new Random();
int zufallszahl = A + generator.nextInt(B - A + 1);
System.out.println("Ihre Zahl könnte lauten: " + zufallszahl);
System.out.println("Bitte geben sie entweder >richtig< ein, falls ich ihre Zahl gefunden habe und sonst " +
">zu klein<, falls ihre Zahl größer ist oder >zu groß<, falls ihre Zahl kleiner ist: ");

Scanner sr = new Scanner(System.in);

String C = sr.nextLine();


if (C.equals("richtig")) {
System.out.println("Ihre Zahl lautet: " + zufallszahl + " Ich habe genau " + i + " Versuch/e gebraucht um ihre " +
"Zahl zu erraten.");
break;
} else if (C.equals("zu klein")) {
A = zufallszahl;


} else if (C.equals("zu groß")) {
B = zufallszahl;


} else {
System.out.println("Ihre Eingabe konnte leider nicht registriert werden.");
}


}
}
}




Hallo,
ich habe eine Frage und zwar wie ich in diesen Code die Bedingung reinschreiben kann, dass falls in der Antwort ob es zu klein, zu groß oder richtig ist zum Beispiel eine falsche Antwortmöglichkeit (z.B falsch)abgefangen wird.
 

temi

Top Contributor
Java:
public class Aufgabe7TeilB {
    public static void main(String[] args) {
        System.out.println("Bitt denken Sie sich eine Zahl aus!");
        Scanner Scanner = new Scanner(System.in); // das sollte nicht kompilieren, weil die Variable so heißt, wie die Klasse
        System.out.println("Bitte geben Sie eine untere Grenze ein: ");
        int A = Integer.parseInt(Scanner.nextLine());
        System.out.println("Bitte geben Sie eine obere Grenze ein: ");
        int B = Scanner.nextInt();
        int i = 0;
        while (B >= A) {
            i++;
            Random generator = new Random();
            int zufallszahl = A + generator.nextInt(B - A + 1);
            System.out.println("Ihre Zahl könnte lauten: " + zufallszahl);
            System.out.println("Bitte geben sie entweder >richtig< ein, falls ich ihre Zahl gefunden habe und sonst " +
                ">zu klein<, falls ihre Zahl größer ist oder >zu groß<, falls ihre Zahl kleiner ist: ");

            Scanner sr = new Scanner(System.in); // den Scanner brauchst du nicht, du hast schon einen von weiter oben...

            String C = sr.nextLine();


            if (C.equals("richtig")) {
                System.out.println("Ihre Zahl lautet: " + zufallszahl + " Ich habe genau " + i + " Versuch/e gebraucht um ihre " +
                    "Zahl zu erraten.");
                break;
            } else if (C.equals("zu klein")) {
                A = zufallszahl;
            } else if (C.equals("zu groß")) {
                B = zufallszahl;
            } else {
                System.out.println("Ihre Eingabe konnte leider nicht registriert werden.");
            }
        }
    }
}

Bitte gewöhne dir bereits jetzt die Code-Konventionen von Java an. Variablennamen beginnen mit einem Kleinbuchstaben, z.B. Scanner scanner = new Scanner(System.in);

Du brauchst auch nur einen Scanner deklarieren, den kannst du später "wiederverwenden"
 

M.L.

Top Contributor
Mit einer kleinen Umstellung in den if-Anweisungen funktioniert es einigermassen (z.B. fehlt eine Kontrolle, welche Zahlen der Nutzer schon eingegeben hat, welche schon erfolglos abgefragt wurden oder ob Obergrenze > Untergrenze ist):
Java:
String C = sr.nextLine();
if
    /*} else if*/ (C.equals("zu klein")) {
        A = zufallszahl;


    } else if (C.equals("zu groß")) {
    B = zufallszahl;

} else if (C.equals("richtig")) {
        System.out.println("Ihre Zahl lautet: " + zufallszahl + " Ich habe genau " + i + " Versuch/e gebraucht um ihre " +
                "Zahl zu erraten.");
        break;
} else {
    System.out.println("Ihre Eingabe konnte leider nicht registriert werden.");
}
 

MoxxiManagarm

Top Contributor
z.B. fehlt eine Kontrolle, welche Zahlen der Nutzer schon eingegeben hat, welche schon erfolglos abgefragt wurden
Nein fehlt nicht. Weil
a) Der Computer errät die Zahlen, nicht andersherum wie sonst für diese Aufgabe üblich. Ich habe das Gefühl du hast dich davon irritieren lassen ;)
b) Er setzt die Grenzen A und B neu, welche für die Generierung der neuen Zufallszahl (nächster Rateversuch Computer) verwendet werden. Dadurch wird die neue Zahl in einem neuen Bereich liegen.

Ergänzung zu b: Die Implementierung dazu hat noch einen kleinen Haken. Wenn z.B. "zu klein" geraten wurde, dann ist die untere Grenze wieder die geratene Zahl, d.h. aktuell kann diese Zahl theoretisch erneut auftauchen. Die neue untere Grenze sollte also die geratene Zahl + 1 sein. Äquivalentes gilt auch für eine zu groß geratene Zahl.
 

M.L.

Top Contributor
irritieren lassen
Das kann man natürlich nicht ausschliessen.... Beim Ausführen des Programms kann man die Untergrenze z.B. auf 5 und die Obergenze auf 6 setzen. Während 5 "zu klein" ist, ist 6 (spasseshalber) "zu groß". Das Programm arbeitet dann solange, bis "richtig" eingegeben wurde (deswegen sollte ja auch eine Zwischenspeicherung der ermittelten Werte erfolgen und weitere Abbruchbedingungen eingefügt werden )
 

MoxxiManagarm

Top Contributor
Das Programm arbeitet dann solange, bis "richtig" eingegeben wurde
Es arbeitet auch solange wie B (obere Grenze) größer und gleich A (untere Grenze) ist. Die Bennenung A und B helfen hier zugegebener Maßen auch nicht zum Veständnis! Besser wären namen wie "lower" und "upper". Eigentlich braucht er im Fall von "richtig" ein Beenden des Programmes anstatt einem break. Dann kann er nach der Schleife eine Ausgabe setzen wie z.B.

Java:
System.out.println("Du willst mich doch verarschen!");

Diese Ausgabe kommt dann nur, wenn die Schleifenbedingung verletzt wurde, also dieser Spaß-Fall eingetreten ist.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Falsche Eingabe über try-catch abfangen Java Basics - Anfänger-Themen 2
C falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
T Input/Output Falsche Eingabe ausgeben Java Basics - Anfänger-Themen 3
M Input/Output ISBN Leser - falsche Eingabe ausgeben Java Basics - Anfänger-Themen 2
M Falsche Eingabe wiederholen lassen Java Basics - Anfänger-Themen 2
B Binärzahlen auflisten, falsche Ausgabe? Java Basics - Anfänger-Themen 1
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
volcanos HashSet und Iterator -> Falsche Sortierreihenfolge ? Java Basics - Anfänger-Themen 18
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
F Wieso wird immer die falsche Mausposition angegeben? Java Basics - Anfänger-Themen 1
JaVaN0oB Wörterraten - Falsche Ausgabe, String/Chars vergleichen Java Basics - Anfänger-Themen 2
H Falsche Ausgabe Java Basics - Anfänger-Themen 2
L Falsche Methode wird geladen Java Basics - Anfänger-Themen 2
T JLabel hat falsche größe Java Basics - Anfänger-Themen 1
H Swing Button hat falsche Größe Java Basics - Anfänger-Themen 5
R StringBounds falsche Ergebnisse Java Basics - Anfänger-Themen 5
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
W Array in String und String in Array - falsche Ausgaben Java Basics - Anfänger-Themen 20
T Falsche Ausgabe ???? Java Basics - Anfänger-Themen 13
S Falsche Ausgabe Java Basics - Anfänger-Themen 6
V Personenverwaltung mit List<>, falsche Ausgaben Java Basics - Anfänger-Themen 5
R Methoden Switch wählt das Falsche Java Basics - Anfänger-Themen 17
K Falsche Methode Java Basics - Anfänger-Themen 3
J Falsche Darstellung von Float Java Basics - Anfänger-Themen 2
W Methoden Falsche Felder von Methode belgegt Java Basics - Anfänger-Themen 14
M falsche implementierung von currentTimeMillis() ? Java Basics - Anfänger-Themen 14
F charAt-Methode liefert falsche Unicode-Werte Java Basics - Anfänger-Themen 8
P Falsche Werte bei Zeitmessungen Java Basics - Anfänger-Themen 7
Helgon Falsche Zeichen im Text Java Basics - Anfänger-Themen 10
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
G Bubblesort - Falsche Sortierung Java Basics - Anfänger-Themen 6
D Kriege falsche MD5 Java Basics - Anfänger-Themen 12
R run ->eclipse ruft falsche Programme auf Java Basics - Anfänger-Themen 5
D p q formel gibt zum Teil falsche Werte aus Java Basics - Anfänger-Themen 5
S Falsche Version? Java Basics - Anfänger-Themen 2
C Falsche Zeit Java Basics - Anfänger-Themen 2
V Falsche Augabe Java Basics - Anfänger-Themen 16
C Klammern einlesen!!! Falsche Ausgabe!!!! Java Basics - Anfänger-Themen 4
S Falsche Reihenfolge von Methodenaufrufen Java Basics - Anfänger-Themen 8
K Verschiebeoperatoren - manchmal falsche Ergebnisse Java Basics - Anfänger-Themen 7
L Datenbankanbindung ODBC falsche pfadangabe? Java Basics - Anfänger-Themen 3
O Falsche Bed. (ein überlauf) seh den Fehler aber nicht. Java Basics - Anfänger-Themen 3
G static array liefert falsche Werte zurück Java Basics - Anfänger-Themen 2
S Falsche Ausgabe Java Basics - Anfänger-Themen 3
L Wegen TableSorter wird falsche Zeile einer Tabelle gelöscht? Java Basics - Anfänger-Themen 2
G falsche Version Java Basics - Anfänger-Themen 3
L Falsche Umsetzung von MVC, brauche Hilfe Java Basics - Anfänger-Themen 6
D Tabelle -> Daten eingeben -> Falsche erhalten Java Basics - Anfänger-Themen 9
S Falsche Ausgabe? Java Basics - Anfänger-Themen 2
F Falsche Daten aus Datei Java Basics - Anfänger-Themen 2
G Falsche Java befehle, doch was ist falsch? Java Basics - Anfänger-Themen 9
M Falsche do-Schleife? Java Basics - Anfänger-Themen 4
E falsche Ausgabe Java Basics - Anfänger-Themen 7
D Falsche Datumsausgabe? Java Basics - Anfänger-Themen 5
J erhalte falsche Kalenderwoche - wo ist der Fehler? Java Basics - Anfänger-Themen 2
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben