myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [JAVA] .equals problem (https://mygully.com/showthread.php?t=2700902)

Meisterroper 10.09.12 14:15

[JAVA] .equals problem
 
Hi leute ich hab hier im folgenden programm code einen fehler.
Ich hab aber kein plan wo er ist in der schule hats noch geklappt nur jetzt als ich daheim 2-3 sachen hinzufügen wollte, klappts aufeinmal net mehr.

Bitte antwortet so schnell wie möglich, (Java editor sagt der fehler ist :

Zahlenraten.java:52:12: variable spielversuch might not have been initialized
while (spielversuch.equals("ja")|| spielversuch.equals("Ja"));

)

Code:

import java.util.Scanner;
public class Zahlenraten
{
  public static void main (String[] args)
  {
    String spielversuch;
    int k;
    // generieren der zufallszahl.
    int zahl = (int)(100 * Math.random() + 1);
    Scanner eingabe = new Scanner (System.in);
    //Spiel beginn.
    do
    {
     
      //Frage nach der anzahl der benötigten versuche.
      System.out.print ("Wie viele versuche brauchst du zum eraten der gesuchten zahl: ");
      int versuche = eingabe.nextInt();
      //Frage nach der zuratenden zahl.
      System.out.print ("Bitte geben sie eine zahl zwichen 1 und 100 ein: ");
      int geraten = eingabe.nextInt();
     
      for (k = 0; k <= versuche ;k++ ) {
       
        //Abfrage von eingabe der geraten zahl, (falls >100 oder <0 ) neue zahl eingaben.
        while ((geraten <= 0 || geraten >= 101))
        {
          System.out.print("Bitte gebe eine andere zahl ein: ");
          geraten = eingabe.nextInt();
        }
       
        //Wenn die zahl zwichen 1 und 100 ist, wiederholt das progrann die abfrage ob die zahl stimmt, zu groß oder zu klein ist.
        do
        {
          if (geraten <= zahl)
          {
            System.out.print("Das war leider falsch, die zahl ist zu klein, versuch es noch einmal: ");
            geraten = eingabe.nextInt();
          }
          if (geraten >= zahl)
          {
            System.out.print("Das war leider falch, die zahl ist zu groß, versuch es noch einmal: ");
            geraten = eingabe.nextInt();
          }
        }
        while (geraten != zahl);
        System.out.print ("Herzlichen Glückwunsch ! Du hast gewonnen." + "\n" +"Willst du nochmal spielen? ");
        spielversuch= eingabe.next();
      }       
    }
   
    //Abfrage ob das spiel wiederholt werden soll
    while (spielversuch.equals("ja")|| spielversuch.equals("Ja"));
   
   
    System.out.print ("Schade, bis zum nächsten mal.");
   
  }
}


Robar666 10.09.12 14:40

Hab mir den code jetzt nicht detaillierter angesehen, aber der Fehler sagt ja eh schon alles:

"Zahlenraten.java:52:12: variable spielversuch might not have been initialized"

Die Variable 'spielversuch' ist nicht initialisiert, sie ist NULL. Wenn du da jetzt 'spielversuch.equals()' aufrufst bekommst du natürlich einen Fehler.

slahn 10.09.12 14:40

Die for-Schleife in Zeile 22 wird nur dann ausgeführt, wenn versuche größer oder gleich 0 ist. Ist dies nicht der Fall, wird durch die Position von "spielversuch= eingabe.next();", spieleversuch nicht initialisiert.

Übrigens, wird auch dein Zufallszahl zu früh initialisiert. Dadurch muss dein Spieler immer wieder die selbe Zahl erraten, außer er beendet das Spiel komplett und startet es neu ...

Meisterroper 10.09.12 15:07

Zitat:

Zitat von slahn (Beitrag 23833374)
Übrigens, wird auch dein Zufallszahl zu früh initialisiert. Dadurch muss dein Spieler immer wieder die selbe Zahl erraten, außer er beendet das Spiel komplett und startet es neu ...

davon bin ich auch schon ausgegangen aber als ich dann mal in einem früheren testlauf die wiederholung gestartet hab, kam eine andere zahl, warum auch immer !!:confused:

derbender123 14.12.12 16:50

might not been...

heist doch kann aber muss nicht ...

einfach einmal =0 oä setzen dann wars das

Rutnoc 14.12.12 19:53

Hi,

btw würde ich in Deiner letzten Abfrage statt "while (spielversuch.equals("ja")|| spielversuch.equals("Ja"));"

eher folgendes schreiben:
"while (spielversuch.toLowerCase().equals("ja"));"

So hast Du zusätzlich noch die Fälle "JA" und "jA" abgedeckt :)


Viel Spass weiterhin mit java

greets
Rutnoc

4gent3004 17.12.12 18:29

Zitat:

Zitat von Rutnoc (Beitrag 24109791)
Hi,

btw würde ich in Deiner letzten Abfrage statt "while (spielversuch.equals("ja")|| spielversuch.equals("Ja"));"

eher folgendes schreiben:
"while (spielversuch.toLowerCase().equals("ja"));"

So hast Du zusätzlich noch die Fälle "JA" und "jA" abgedeckt :)


Viel Spass weiterhin mit java

greets
Rutnoc

das wollte ich auch anmerken als ich das oben grad gelesen hab :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:29 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.