sprung zu einem anderen punkt im script

hans-sonny

Bekanntes Mitglied
hi leute,

ich habe eine frage:

ich habe ein kleines programm welches mir eine zahl als hexwert ausgibt, (zufällig mit random) bis jetzt habe ich es soweit dass ich eine eingabe machen kann (also den dezimalwert eingebe) und diese eingabe wird dann überprüft ob es stimmt.

jetzt möchte ich es so machen dass wenn die eingabe falsch war dass ich es nochmals versuchen kann ...

wie kann ich also die selbe randomisierte zahl ausgeben lassen und einen zweiten eingabe versuch starten?

mein code:
Java:
   int ausgabe = wuerfel.nextInt(maxRandom + 1);
            out.printf("hexadezimal %x  = dezimal ", ausgabe);

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

            int eingabe = EINGABE.nextInt();


            
            if (eingabe == ausgabe) {
                richtig = richtig +1;							// erhöht den Variablenwert der Variable richtig um 1 bei richtiger Antwort
                System.out.println("Ihre Eingabe ist richtig" );
                
            } else if (eingabe != ausgabe) {
	        System.out.printf("Ihre Eingabe war leider falsch. Versuchen Sie es doch nochmals. (Ihre Eingabe:%d)\n", ausgabe);	// Gibt den Text aus dass die Antwort falsch war, sowie die eigentlich richtige Antwort
	    } else {
                falsch = falsch +1;							// erhöht den Variablenwert der Variable falsch um 1 bei falscher Antwort
                System.out.printf("Ihre Eingabe war leider falsch %d\n", ausgabe);	// Gibt den Text aus dass die Antwort falsch war, sowie die eigentlich richtige Antwort
                
              
            }
 
Hi,
du könntest deine Eingabe in eine While-Schleife setzen die solange true ist bis die richtige Eingabe gegeben wurde. Eine gültige Eingabe setzt die Bedingungsvariable auf false und du verlässt deine Schleife.

Pseudocode:

while(bedingung)

-warte auf eingabe

-wenn eingabe korrekt dann bedingung auf false setzen
-wenn falsche eingabe bedingung auf true lassen
 
Du brauchst nicht explizit sagen, dass auf eine Eingabe gewartet werden soll. Wenn eine Methode wie nextInt() wie die von java.util.Scanner aufgerufen wird, wird auf der Konsole automatisch so lange gewartet, bis eine Eingabe (mit Enter abgeschlossen) stattgefunden hat. Das oben von Firephoenix im Pseudocode geschriebene "warte auf Eingabe" brauchst du also in Wirklichkeit nicht ausprogrammieren.
 
>wie warte ich auf eine einagbe einfach eine if abfrage?

Code:
if (!EINGABE.hasNext()) {

Ich neheme an EINGABE ist der Scanner und darin ist System.in .
Wird wohl blocken bis was kommt.
Java:
package ch.dmj.faq.mics;
 
import java.util.Scanner;
 
 
public class CmdReader {
 
    public static void main(String[] args) {
        // System.in is the command line
        // the scanner makes it easy to read
        Scanner scanner = new Scanner(System.in);
        // Welcome our user
        System.out.println("Hello. Please insert a number:");
        // runs forever: until: break
        while (true) {
            // waits until some input comes from the command line
            if (scanner.hasNext()) {
                // is the input as well a integer?
                if (scanner.hasNextInt()) {
                    // if so well done
                    int i = scanner.nextInt();
                    System.out.println("You typed an integer: " + i);
                    // well done: finish while
                    break;
                }
                // read the line
                String s = scanner.next();
                // print the input
                System.out.println("You did not type an integer: " + s);
                // well: do it again
                System.out.println("Try again: ");
                //start again while..
            }
        }
        // goodby
        System.out.println("Goodbye...");
    }
}
 
sorry ich versteh das noch nicht ganz bin erst in der 2. woche mit java im gange 🙂 habe eben erst angefangen zu studieren

könntest du es mir eventuell etwas erklären wie ich es dann noch mache dass die selbe eingabe wiederholt wird und wo was hinkommt checke es noch nicht wirklich
 
hmm..da gibts nicht mehr viel mehr dazu zu sagen als das was im Code steht.

Code:
while(true) {
alles hier drin läuft bis ein break; im code kommt
Code:
}

Code:
if (scanner.hasNext()) {
hier wird gewartet, bis eine Eingebe kommt (mit Enter von der Shell...)

Code:
if (scanner.hasNextInt()) {
Ist die eingabe auch eine Zahl? Nützt ja nix wenn mal "banane" in eine Zahl umwandeln will..

Dann wär wohl deine Abbruchbedingung da: Wenn eingabe == ausgabe dann break..sonst geht das spiel von vorne los..
 
hmm..da gibts nicht mehr viel mehr dazu zu sagen als das was im Code steht.

Code:
while(true) {
alles hier drin läuft bis ein break; im code kommt
Code:
}

Code:
if (scanner.hasNext()) {
hier wird gewartet, bis eine Eingebe kommt (mit Enter von der Shell...)

Code:
if (scanner.hasNextInt()) {
Ist die eingabe auch eine Zahl? Nützt ja nix wenn mal "banane" in eine Zahl umwandeln will..

Dann wär wohl deine Abbruchbedingung da: Wenn eingabe == ausgabe dann break..sonst geht das spiel von vorne los..


ja dann fängt es von vorne an aber dann wird mir von dem würfel eine neue zahl ausgegeben oder?

ich will ja die chance haben eine frage 2x zu bearbeiten
 
kuck dir mal den Link an, den ich gepostet habe. das dient aber nur als anhaltspunkt (sollte allerdings das machen, was du willst). hatte es ziemlich eilig und hab nur ein beispiel geschrieben, das ich jetzt allerdings nicht allzu schön finde (wobei es allgemein mit den Dauerschleifen und Benutzereingaben imho immer bissle hässlich wird 😉).
 
Dann musst du halt die Schleife erst später beginnen..
Java:
import java.util.Random;
import java.util.Scanner;


public class Foo {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println("Hello. I thinking a number from one to ten.. ");
		int randomNumber = new Random().nextInt(10) + 1;
		while (true) {
			if (scanner.hasNext()) {
				if (scanner.hasNextInt()) {
					int i = scanner.nextInt();
					if (i == randomNumber) {
						System.out.println("Well done... It was " + randomNumber);
						break;
					}
					System.out.println("Sorry. Try again.");
				} else {
					String s = scanner.next();
					System.out.println("You did not type an integer. Try again: ");
				}
			}
		}
		System.out.println("Goodbye...");
	}
}
 

Zurück
Oben