Zum Inhalt springen

Zahlenraten Programmieren [ JSP ]


xMiauz

Empfohlene Beiträge

Hallo. Ich bin in der Anfangsphase. & Programmiere gerade das Zahlenraten. Und das Soll die "Versuche" runterzählen. Also wenn man einmal geraten hat das man dann einen versuch weniger hat. Aber aus irgendeinem Grund Tut's die nur einmal und kein weiteres. Hier mal der Code :


//Erzeugt eine zufaellige ganze Zahl im Bereich [0; max ]

    public static int wuerfeln(int max) {

        return (int) (Math.random() * max);

    }

// wandelt eine zeichenkette in eine double zahl um


    public static double sToD(String s) {

        if (s == null) {

            return Double.NaN;

        }

        double d;

        s = s.trim();

        if (s.equals("")) {

            s = "0";

        }

        s = s.replace(',', '.');

        try {

            d = Double.parseDouble(s);

        } catch (NumberFormatException e) {

            d = Double.NaN;

        }

        return d;

    }

%>


<%

        String sZaehler = request.getParameter("zaehler");

        if (sZaehler == null) {

            sZaehler = "5";

        }

        double dZaehler = sToD(sZaehler);

        int iZaehler = 0;

        if (!Double.isNaN(dZaehler)) {

            iZaehler = (int) dZaehler;

        }



        String sKnopf = request.getParameter("knopf");

        if (sKnopf == null) {

            sKnopf = "Erster Seitenaufruf";

        }

        if (sKnopf.equals("Raten!")) {

            iZaehler = iZaehler - 1;             // ++iZaehler

        }

        if(iZaehler==0)

            {

                System.out.println("Du hast verloren! ");

            }


%>

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>Zahlenraten</title>

    </head>

    <body bgcolor="#BFBFBF">

        <div align="center">

            <br><br><br><br><br><br><br><h1>Zahlenraten</h1>

            <input type="hidden" name="Geheim" value="<%=wuerfeln(99)%>" /><br><br>


            <form action="index.jsp" method="post">

                Anzahl der Versuche : <input type="text" name="zaehler" value="<%=iZaehler%>" disabled="false"/><br>

                Ihre Zahl : <input type="text" name="" value="" /><br>

                <input type="submit" name="knopf" value="Raten!"/><br>

                <input type="submit" name="knopf" value="Neustart"/><br>

            </form><br><br>

            <br><br>TEST<br>  <%=sKnopf%> || <%=iZaehler%>

        </div>

    </body>

</html>

Ich hoffe Das ist in dieser Abteilung hier Richtig :hells:

+ Danke für jede Hilfe.

Mfg xMiauz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das passiert ja automatisch immer wenn man auf den knopf "Raten!" klickt.

Hat ja schonmal funktioniert, dann hab ich in dem programm mit dem ich das schreibe auf "Format" geklickt, das rückt alles dann automatisch ein undso.

Danach ging's nicht mehr. Und ich konnte es nicht mehr wiederherstellen. :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das eine JSP alleine auf Grund der Umformatierung nicht funktioniert, ist mir bisher nicht unter gekommen.

Kann es sein das ein einfaches "<%" ganz oben fehlt? - Da es außerhalb des HTML Segmentes liegt, kannst du das ja ohnehin nicht sehen.

Ohh. Tut mir leid. Das hab ich nur irgendwie nicht in den Code kopiert.

Aber ich hab's da so steht MIT dem "<%" hab's hier nur ausversehn nicht mit reinkopiert. Sorry, mein Fehler.

Hmn. Aber das komische ist ja.. das es nur 1 <- mal "-1" rechnet und dann nicht mehr. Egal wie oft ich da auf "Raten!" klicke.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann zeig doch mal den Code-Abschnitt, wo runter gezählt wird.

<%

        String sZaehler = request.getParameter("zaehler");

        if (sZaehler == null) {

            sZaehler = "5";

        }

        double dZaehler = sToD(sZaehler);

        int iZaehler = 0;

        if (!Double.isNaN(dZaehler)) {

            iZaehler = (int) dZaehler;

        }



        String sKnopf = request.getParameter("knopf");

        if (sKnopf == null) {

            sKnopf = "Erster Seitenaufruf";

        }

        if (sKnopf.equals("Raten!")) {

            iZaehler = iZaehler - 1;             // ++iZaehler

%>

Da wird runtergezählt. eigentlich ab dem

"String sKnopf = request.getParameter("knopf");"

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann verfolg den Wert von iZaehler doch mal zurück.

Wo kommt der her?

iZaehler = (int) dZaehler;
Wo kommt dZaehler her?
double dZaehler = sToD(sZaehler);
Wo kommt sZaehler her?
String sZaehler = request.getParameter("zaehler");

Weiter zurück lässt sich das hier nicht verfolgen, da du nicht mehr Code gepostet hast. Schau dir den Rückgabewert von der Methode getParameter() an usw.

Noch eine kleine Anmerkung:

Dein Quelltext ist leider ganz grausam. Du erzeugst einen String, der (vermutlich) einen numerischen Wert bekommt, bastelst dir daraus einen Double und daraus wiederum einen Integer und prüfst vor jeder Umwandlung, ob noch alles ok mit dem Wert ist. Wozu diese Umstände?

Link zu diesem Kommentar
Auf anderen Seiten teilen

An Ulfmann.

Du scheinst ahnung zu haben.

Ich nicht so. ^^

Lern's grad in der Schule.

Was würdest du mir denn empfehlen wie ich das amchen sollte ?

+ Danke für deine Hilfe.

MfG xMiauz.

P.S. Der ganze Code steht ganz oben. den hab ich zu Anfang gepostet. Das ist der ganze. Mehr hab ich nicht. + Wie gesagt das hat so sogar mal funktioniert, und dann hab ich i.was "kaputt" gemacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das kann nie und nimmer der ganze Code sein. Es fehlt Klassendeklaration, Einstiegspunkt und Objektinitialisierungen (Bsp.: von der Variable "request", die kommt aus dem nichts oder wie?!).

Mit Servlets hab ich mich noch nicht befasst. Aber die Methode getParameter() aus dem Interface ServletRequest, wie ich stark vermute...

Returns:

a String representing the single value of the parameter

Ich vermute in dieser "Zuordnung" den Fehler. Überprüf das mal (ist aber wie gesagt nur eine Vermutung, da dies Thema auch so ziemlich unbekannt für mich ist).

Hier noch ein brauchbarer Link:

The Java Servlet API White Paper

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kenn mich nicht so gut aus wie du.

Aber. Mein Lehrer hat mir und meiner klasse das vorgeführt.

Auch das mit dem "request" genauso angewandt. Und alles hat funktioniert.

+ Mit diesen speziellen Fachwörtern versteh ich's nicht wirklich. :hells:

+ Doch das ist der Ganze Code. Naja, der muss ja säter noch zahlen vergleichen und all sowas. Aber bis jetzt müsst er doch wenigstens die "Versuche" runterzählen. Da er schon 1mal "einen versuch" abzieht.

Das problem ist doch. Das es kein 2tes mal passiert. !?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Sondern?

Bekommst du beim ersten [zweiten] Klick die Ausgabe auf der Konsole? Dann sollte ja klar sein, warum bzw. wo der Fehler liegt.

Das ist ja eine "Webpage" und dann steht da halt " Versuche : 5"

Beim ersten mal klicken auf den button "Raten!" steht dann bei versuche nur noch 4. Wenn ich dann aber Noch einmal auf "Raten!" klicke steht da immernoch 4. Statt 3 <-. WEil, eigentlich muss es ja immer weiter und weiter runterzählen. Das "du hast verloren" solls ja nur ausgeben wenn die "versuche" auf 0 sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab's geschafft. Was genau jetzt der fehler war hab ich schon vergessen.

Schon einige Tage her. Und ich hab schon weiter an dem Spiel gearbeitet.

Und auf ein neues Problem gestoßen.

In einem Feld soll eine Zahl frei wählbar sein. Die ist bei mir aber auf 99.

[ hab ich auf 99 gesetzt. ] Wie krieg ich's in diesem Fall hin das ich sie frei wählen kann. und wenn ich dann die buttons betätige das die zahl danach nicht wieder sofort 99 ist. sonder erst durch den vergleich läuft.

Hier der Code:

<%!

//Erzeugt eine zufaellige ganze Zahl im Bereich [0; max ].

    public static int wuerfeln(int max) {

        return (int) (Math.random() * max);

    }

// wandelt eine zeichenkette in eine double zahl um.

    public static double sToD(String s) {

        if (s == null) {

            return Double.NaN;

        }

        double d;

        s = s.trim();

        if (s.equals("")) {

            s = "0";

        }

        s = s.replace(',', '.');

        try {

            d = Double.parseDouble(s);

        } catch (NumberFormatException e) {

            d = Double.NaN;

        }

        return d;

    }

%>


<%

// Die zahl die frei gewählt werden kann bzw sollte.

        String sZahl = request.getParameter("zahl");

        double dZahl = sToD(sZahl);

        int iZahl = (int) dZahl;

        if (Double.isNaN(dZahl)) {

            iZahl = 99;

        }


// Die Versuche.

        String sZaehler = request.getParameter("zaehler");

        double dZaehler = sToD(sZaehler);

        int iZaehler = (int) dZaehler;

        if (Double.isNaN(dZaehler)) {

            iZaehler = 10;

        }

        if (iZaehler == 1) {

            sZaehler = "disabled";

            sZahl = "Sie Haben Verloren.";

        }


// Ausgabe ob die "frei wählbare Zahl" der geheimen Zahl entspricht.

        if (Math.random() > iZahl) {

            sZahl = "Ihre Zahl ist kleiner als die Geheime.";

        } else if (Math.random() < iZahl) {

            sZahl = "Ihre Zahl ist größer als die Geheime.";

        } else {

            sZahl = "Sie haben gewonnen";

            sZaehler = "disabled";

        }


// Nebeninfo. + Ausgabe wenn man verloren hat.

        String sInfo = request.getParameter("info");

        if (sInfo == null) {

            sInfo = "Viel Erfolg beim raten!";

        }

        if (iZaehler == 1) {

            sInfo = "Sie haben verloren!";

        }


// "Aufgaben" der Buttons

        String sKnopf = request.getParameter("knopf");

        if (sKnopf == null) {

            sKnopf = "Erster Seitenaufruf";

        }

        if (sKnopf.equals("Raten!")) {

            iZaehler = iZaehler - 1;

        }

        if (sKnopf.equals("Neustart")) {

            iZaehler = 10;

        }

%>


<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>Zahlenraten</title>

    </head>

    <body bgcolor="#BFBFBF">

        <h1>Zahlenraten</h1><br>

        <ul type="disc">

            <li><b><u>Vorraussetzungen:</u></b></li>

            <li>Du kannst lesen. </li>

            <li>Du bist ein humanes Individuum.</li>

            <li>Du weisst was "human" bedeutet.</li>

            <li>Du hast keine Angst vor Knöpfen.</li>

        </ul>

        <br><br>

        <input type="hidden" name="Geheim" value="<%=wuerfeln(99)%>" /><br><br>

        <form action="NEUzahlenraten.jsp">

            Ihre Versuche : <br><input type="text" size="44" name="zaehler" value="<%=iZaehler%>"/><br>

            Ihre Zahl : <br><input  type="text" size="44" name="myZahl" value="<%=iZahl%>" /><br><br>

            Info:  || <%=sInfo%> ||<br>

            Info 2: || <%=sZahl%><br>

            <input type="submit" name="knopf" value="Raten!" <%=sZaehler%>/> ||

            <input type="submit" name="knopf" value="Neustart"/><br>

        </form><br><br>

        <br><br>TEST<br>  || sknopf: <%=sKnopf%> || iZaehler: <%=iZaehler%> || dZahl: <%=dZahl%> || sZahl: <%=sZahl%> || sInfo: <%=sInfo%> ||

    </body>

</html>

MfG xMiauz. :)

P.S. : Danke an alle die mir Tipps gegeben haben und oder versucht haben das problem zu lösen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...