Monty-Hall-Spiel

Ich bin ein neuer Programmierer gerade dabei, Java zu lernen. Ich habe ein Spiel hier basiert auf dem Spiel Let ' s make a deal & die monty-hall-problem (https://www.youtube.com/watch?v=mhlc7peGlGg) und ich habe schon Probleme mit der Logik für diesen code. Scheint alles zu funktionieren, außer dass ich kann nicht scheinen, um die user_door wechseln auf die andere Tür und festzustellen, ob Sie ein Gewinner richtig. Wenn jemand kann mir helfen zu verstehen, was ich falsch mache hier, ich würde gerne diese Gelegenheit nutzen, um zu lernen, danke!

import java.util.Random;
import java.util.Scanner;
public class GameShow {

public static void main(String[] args) {
    Scanner scan = new Scanner (System.in);
    Random generator = new Random();

    //Initialize Variables
    int user_door,
        open_door,
        other_door,
        prize_door;

    //Generate random value 1-3
    prize_door = generator.nextInt(3)+1;
    open_door = prize_door;

    while(open_door == prize_door){
        open_door = generator.nextInt(3)+1;
    }

    other_door = open_door;

    while (other_door == open_door || other_door == prize_door){
        other_door = generator.nextInt(3)+1;
    }

    //Begin Game
    System.out.println("*** Welcome to the game show! ***");  
    System.out.println("Select the door (1, 2, or 3): ");
    user_door = scan.nextInt();


    //User Validation
        if (user_door > 3 || user_door < 0) {
            System.out.println("Please select door 1, 2, or 3");
            user_door = scan.nextInt();
        } else if(user_door == 1 || user_door == 2 ||  user_door == 3) {

    //Continue Game
    System.out.println("\nIn a moment, I will show you where the prize is located,");
    System.out.println("but first I will show you what is behind one of the other doors");

    //Continue Dialogue
    System.out.println("\nBehind door number " + open_door + " are goats!");
    System.out.println("You selected door number " + user_door);
    System.out.println("\nWould you like to switch your door(y/n)? ");

    //User Input Yes or No
    char userReply = scan.next().charAt(0);

    //If statement with nested while statements for user input
        if (userReply == 'y'){
                user_door = other_door;
                } while(userReply != 'y' && userReply != 'n')
                {
                    //User Validation
                    System.out.println("Please enter either y/n");
                    userReply = scan.next().charAt(0);
                } 

    System.out.println("The prize is behind door number: " + prize_door); 

    //Check to see if user won or lost
        if(user_door == prize_door){
            System.out.println("Congratulations! You won the prize!");
            } else {
                    System.out.println("Sorry. You lost.");
                    }       

        }
    }
}
  • Haben Sie versucht, einen debugger Anhängen und Schritt durch den code Zeile für Zeile zu sehen, an welcher Stelle genau, das Programm abweichend von Ihrer Erwartung, was er tun soll?
  • Sind Sie mit Eclipse?
  • Ich bin dabei ein code-review durch Ihre Arbeit im moment. Es ist ein bisschen mehr zu verfolgen, das problem, also werde ich erklären, einige der Dinge, die man optimieren könnte in ein paar Minuten.
  • Wenn Sie mit Eclipse zu sehen, der Variablen gehen Sie zu Fenster -> Show View -> Variablen, oder alternativ drücken Sie Alt+Umschalt+Q,V
  • Ja, ich bin auf eclipse und wird versuchen, dass so schnell wie möglich! Danke für die Hilfe
  • Wenn Sie sind besorgt über andere Leute, die auf Ihre Klasse zu teilen Ihren code nicht veröffentlichen Sie Ihren code auf eine öffentliche Seite im internet. Versucht zu Bearbeiten, aus den Antworten der beteiligten, nachdem Sie erhalten Ihre Antwort zu vermeiden, jemand lernen die gleichen Dinge, die Sie getan haben ist SO gegen die Politik. Neben selbst dann können die Leute sehen, die source-code-suchen Sie in edit-history.
  • Selbst wenn es bearbeitet wird, Sie ist eine öffentliche edit-history ist verfügbar für die google-Suchmaschine und es ist SO gegen die Politik als t0mppa erwähnt

InformationsquelleAutor Kamhl | 2014-10-10
Schreibe einen Kommentar