Überprüfung Benutzereingabe

Schmitzi

Mitglied
Hallo zusammen,
Nach stundenlanger Suche in Google bin ich leider immer noch ratlos.
Es geht um folgendes:
Benutzer soll nur Dezimalzahlen eingeben können. Gibt er z.B. ein Wort ein kommt ein Fehler
dabei raus und er hat wieder die Eingabemöglichkeit.

Mit "try/catch" hab ich das teilweise auch geschafft aber leider liegt das ganze bei mir
in einer Schleife, sprich: entweder es entsteht eine Endlosschleife, in der immer wieder
"falsche Eingabe" ausgegeben wird oder ich baue ein "break;" ein (was aber ja leider das Programm beendet).
Mit Continue ging es ebenfalls nicht.

Hoffe ich hab es einigermaßen verständlich erklärt und danke schonmal.
MfG,
Schmitzi
 

nrg

Top Contributor
musst halt in der schleife einlesen

edit: am besten zeigst du mal deinen Code. dann kann man das auch besser beurteilen :)
 

Schmitzi

Mitglied
Java:
import java.util.Scanner;
import java.util.Random;
import static java.lang.System.out;
import static java.lang.System.in;

public final class Rechner1 {
    private Rechner1() { }
    private static final Scanner EINGABE = new Scanner(in);
    public static void main(final String[] args) {
        //----------------------------------------- Aufgabenstellung ausgeben
        out.println("Dezimaldarstellung der Hexadezimalzahl eingeben "
                    + "(Strg-D fuer Ende):");

        //---------------------------- Zufallszahlengenerator initialisieren
        Random wuerfel = new Random();
        final int maxRandom = 99; // nur Zahlen zwischen 0 und 99

        //------------------------------------ Variablen fuer die Auswertung

        int treffer = 0; //------------------- Variable fuer richtige Eingaben
        int nieten  = 0; //------------------- Variable fuer falsche Eingaben
        final int mindestergebnisse = 4; //--- Konstante fuer Mindestergebnisse

        while (true) {
            //---------------------------------------------- Aufgabe stellen
            int ausgabe = wuerfel.nextInt(maxRandom + 1);
            out.printf("hexadezimal %x  = dezimal ", ausgabe);

            //------------------------------------------------ Eingabe lesen
            if (!EINGABE.hasNext()) {
                break; // break beendet die Schleife
            }

// __ Um diesen Teil geht es

            int eingabe = EINGABE.nextInt(); // Eingabe in Variable schreiben

            //---------------------------------------------- Eingabe pruefen

                if (eingabe == ausgabe) {
                    // Eingabe ist korrekt
                    out.println("Richtig!");
                    treffer = treffer + 1; // Zaehler richtige Ergebnisse +1
                } else {
                    // Eingabe ist nicht korrekt
					out.println("Eingabe: " + eingabe);
                    out.println("Falsch! (Richtig: " + ausgabe + ")");
                    nieten = nieten + 1;  // Zaehler falsche Ergebnisse +1
                }
        }
// __ Um diesen Teil geht es

        //------------------------------------------------------- Auswertung

        // Menge richtiger und falscher Eingaben ausgeben
        out.println("\n" + treffer + " richtige Eingabe(n)");
        out.println(nieten + " falsche Eingabe(n)");


        // Ermitteln der Anzahl aller Eingaben
        int ergebnisse = treffer + nieten;
        /* Pruefen ob es min. 4 Eingaben waren und davon
        mindestens die Haelfte richtig.*/
        boolean voraussetzunga = ergebnisse >= mindestergebnisse;
        boolean voraussetzungb = treffer >= nieten;
        if (voraussetzunga && voraussetzungb) {
                // Ausgabe wenn der Test bestanden wurde
                out.println("Bestanden!");
        } else {
                // Ausgabe wenn der test nicht bestanden wurde
                out.println("Nicht bestanden!");
        }
    }
}

So, bitte :)
 

XHelp

Top Contributor
Mach es nicht
Code:
while(true)
sondern
Code:
while(!richtigeEingabe)
und setze es erst auf true, wenn da wirklich nur Zahlen eingegeben wurden sind.

P.S. Wozu hast du solche Sachen wie
Code:
private static
?
 

nrg

Top Contributor
sowas find ich eh immer unschön mit diesen dauerschleifen und eingaben. Mir fällt da immer nur sowas ein (auch schon ewig nicht mehr gemacht):

Java:
public class Rechner {

	private static Scanner scn = new Scanner(System.in);

	public static void main(final String[] args) {
		System.out.println("Dezimaldarstellung der Hexadezimalzahl eingeben (exit fuer Ende):");
		Random wuerfel = new Random();
		int treffer = 0;
		int nieten  = 0;
		
		int hexa = wuerfel.nextInt(99 + 1);
		System.out.printf("hexadezimal %x  = dezimal ", hexa);
		String eingabe = getNextVaildInput(hexa);
		while (!eingabe.equals("exit")) {
			int dec = Integer.parseInt(eingabe);
			if (dec == hexa) {
				System.out.println("Richtig!");
				treffer++;
			} else {
				System.out.println("Eingabe: " + eingabe);
				System.out.println("Falsch! (Richtig: " + hexa + ")");
				nieten++;
			}
			hexa = wuerfel.nextInt(99 + 1);
			System.out.printf("hexadezimal %x  = dezimal ", hexa);
			eingabe = getNextVaildInput(hexa);
		}
	}

	private static String getNextVaildInput(int hexa) {
		String eingabe = scn.next();
		while (!eingabe.matches("[0-9]+") && !eingabe.equals("exit")) {
			System.out.println("Fehlerhafte Eingabe. Bitte wiederholen!");
			System.out.printf("hexadezimal %x  = dezimal ", hexa);
			eingabe = scn.next();
		}
		return eingabe;
	}
}

hab die variablen weng umbenannt und rausgeschmissen, was ich grad net gebraucht hab. kannste ja wieder reinnehmen bzw den code umschreiben.
 

Schmitzi

Mitglied
Gut das hab ich soweit verstanden und es klappt auch wie gewollt also danke nochmal :).
Was mir jetzt noch fehlt ist das Auffang der Eingabe Strg+C. Dabei entsteht nämlich
immer so eine unschöne Fehlermeldung "Exception in thread main".
Hat jemand einen Tipp unter welchem Thema ich das im Manual finde?

MfG,
Schmitzi
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Überprüfung dass Zahl nur aus 0,1 besteht Java Basics - Anfänger-Themen 2
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
A Überprüfung in TicTacToe Java Basics - Anfänger-Themen 5
C Problem mit If Else If und Überprüfung eines Counters Java Basics - Anfänger-Themen 3
S Überprüfung rechtwinkliges Dreieck Java Basics - Anfänger-Themen 4
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
T Algorithmus zur Überprüfung eines binären Suchbaums Java Basics - Anfänger-Themen 2
V Personalnummer Überprüfung Java Basics - Anfänger-Themen 2
T Überprüfung einer Aufgabe zu verketteten Listen Java Basics - Anfänger-Themen 5
O Überprüfung auf Existenz einer Methode Java Basics - Anfänger-Themen 6
P Fallunterscheidung mit Überprüfung (enum) Java Basics - Anfänger-Themen 11
A null-Überprüfung Java Basics - Anfänger-Themen 24
S VierGewinnt Überprüfung Java Basics - Anfänger-Themen 7
J While-Überprüfung wird nicht wahr Java Basics - Anfänger-Themen 2
C Datentypen Methode zur Überprüfung, ob ein Rechenergbnis Int ist Java Basics - Anfänger-Themen 4
C Mit if Überprüfung von drei Werten durchführen Java Basics - Anfänger-Themen 6
B Problem bei Überprüfung des Inhalts eines Arrays Java Basics - Anfänger-Themen 25
J Überprüfung, ob Array aufsteigend sortiert Java Basics - Anfänger-Themen 6
U Frage zur Überprüfung von einer Zahl Java Basics - Anfänger-Themen 9
C Überprüfung eines Arrays auf einen speziellen Wert Java Basics - Anfänger-Themen 5
D String-Überprüfung Java Basics - Anfänger-Themen 4
Q Überprüfung ob JTextField einen Text enthält Java Basics - Anfänger-Themen 2
B Überprüfung ob Methode von geerbter Klasse aufgerufen wird Java Basics - Anfänger-Themen 2
C Überprüfung ob Eingabe Text/ASCII Java Basics - Anfänger-Themen 24
J Überprüfung ersten Zeichens Java Basics - Anfänger-Themen 7
D Überprüfung: Double oder Integer Java Basics - Anfänger-Themen 4
N Überprüfung der ZufallsZahl? Java Basics - Anfänger-Themen 2
R Eingabe eines Chars mit Überprüfung Java Basics - Anfänger-Themen 3
O Überprüfung von Eingaben auf Sinnhaftigkeit Java Basics - Anfänger-Themen 7
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
D Input/Output Befehl aus Benutzereingabe herausfiltern Java Basics - Anfänger-Themen 12
J Stack mit Benutzereingabe Java Basics - Anfänger-Themen 17
A Reader für Benutzereingabe in Eclipse importieren Java Basics - Anfänger-Themen 3
Z Benutzereingabe überprüfen. Java Basics - Anfänger-Themen 2
B Input/Output Benutzereingabe mit BufferedReader Java Basics - Anfänger-Themen 7
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4
T Benutzereingabe in form von string wieder ausgeben in JOptionPane Java Basics - Anfänger-Themen 14
F Median berechnen, Benutzereingabe Problem! Java Basics - Anfänger-Themen 14
S Benutzereingabe über Scanner Klasse korrekt behandeln Java Basics - Anfänger-Themen 9
C Benutzereingabe Java Basics - Anfänger-Themen 41
D Benutzereingabe mit for-Schleife Java Basics - Anfänger-Themen 9
D Wie auf leere Benutzereingabe (int) prüfen? Java Basics - Anfänger-Themen 16
J Programm beenden via Benutzereingabe Java Basics - Anfänger-Themen 8
K Objektname - Benutzereingabe? Java Basics - Anfänger-Themen 10
S Problem bei Benutzereingabe Java Basics - Anfänger-Themen 9
G Benutzereingabe auf Konsole maskieren (Passworteingabe) Java Basics - Anfänger-Themen 4
S Benutzereingabe - Gross und Kleinschreibung ignorieren Java Basics - Anfänger-Themen 7
C Benutzereingabe vergleichen Java Basics - Anfänger-Themen 3
G Benutzereingabe Java Basics - Anfänger-Themen 2
G Benutzereingabe entgegennehmen Java Basics - Anfänger-Themen 9
U Benutzereingabe die Zeichen einzeln bearbeiten Java Basics - Anfänger-Themen 7
G Benutzereingabe erzwingen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben