Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
|
10.09.12, 14:15
|
#1
|
Ohh die Meisterröstung!
Registriert seit: Jun 2011
Ort: Deutschland
Beiträge: 106
Bedankt: 78
|
[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.");
}
}
__________________
|
|
|
10.09.12, 14:40
|
#2
|
Anfänger
Registriert seit: Apr 2012
Beiträge: 43
Bedankt: 16
|
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.
|
|
|
10.09.12, 14:40
|
#3
|
Erfahrenes Mitglied
Registriert seit: Oct 2009
Beiträge: 640
Bedankt: 228
|
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 ...
|
|
|
10.09.12, 15:07
|
#4
|
Ohh die Meisterröstung!
Registriert seit: Jun 2011
Ort: Deutschland
Beiträge: 106
Bedankt: 78
|
Zitat:
Zitat von slahn
Ü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 !!
__________________
|
|
|
14.12.12, 16:50
|
#5
|
Anfänger
Registriert seit: Jan 2012
Beiträge: 6
Bedankt: 0
|
might not been...
heist doch kann aber muss nicht ...
einfach einmal =0 oä setzen dann wars das
|
|
|
14.12.12, 19:53
|
#6
|
Anfänger
Registriert seit: Jun 2012
Beiträge: 1
Bedankt: 0
|
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
|
|
|
17.12.12, 18:29
|
#7
|
Anfänger
Registriert seit: Dec 2012
Beiträge: 1
Bedankt: 0
|
Zitat:
Zitat von Rutnoc
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
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 Uhr.
().
|