Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hey
ich möchte ein Ratespiel programmieren bei dem der nutzer eine zahl zwischen 1 bis 100 erraten soll! Leider funktioniert es noch nicht da es irgendwie immer anzeigt "too small" .. verstehe aber nicht wieso :/ bin über jeden ratschlag sehr dankbar!
Java:
public class GuessingGame {
public static void main(String[] args) {
System.out.println("Welcome!");
long zufallszahl = Math.round(Math.random() * 100);
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter your guess:");
int zahl = scanner.nextInt();
System.out.println("z" + zufallszahl);
while ( zahl != zufallszahl) {
if (zahl < zufallszahl) {
System.out.println("Too small!");
int a = scanner.nextInt();
} else if (zahl > zufallszahl) {
System.out.println("Too big!");
int a = scanner.nextInt();
} else if (zahl == zufallszahl) {
System.out.println("You Win");
}} }
danke für die tipps ich werde es mit einer do while schleife probieren! nächstes mal benutze ich die tags sorry^^
eine frage ich kann den alten guess zahl aber nicht in der if anweisung benutzen.. wieso :/ ?
public class GuessingGame {
public static void main(String[] args) {
System.out.println("Welcome!");
int zahl = 0;
long zufallszahl = Math.round(Math.random() * 100);
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter your guess:");
try {
zahl = scanner.nextInt();
} catch (InputMismatchException e){
System.out.println("Not a number - Try again!");
}
while ( zahl != zufallszahl) {
if (zahl < zufallszahl) {
System.out.println("Too small!");
zahl = scanner.nextInt();
} else if (zahl > zufallszahl) {
System.out.println("Too big!");
zahl = scanner.nextInt();
} else {
System.out.println("You Win");
}
}
}
}
mein code funktioniert inzwischen fast komplett, habs dann doch mit if anweisungen gelassen.. aber meine exception funktioniert nicht, es wird zwar das richtige ausgegeben aber auch "Too small" (Fehlermeldung Exception in thread "main" java.util.InputMismatchException), liegt der fehler nach dem try ? .. auch wird wenn man die zahl richtig hat nichts in der konsole ausgegeben :/
zum schluss soll noch gefragt werden ob derjenige noch ein spiel spielen will das er dann mit y/n beantworten kann.. mach ich das dann am besten mit continue oder gibts da eine leichtere lösung?
danke für eure hilfe!
es wird zwar das richtige ausgegeben aber auch "Too small" (Fehlermeldung Exception in thread "main" java.util.InputMismatchException), liegt der fehler nach dem try ? ..
@rafi97 überleg mal, was passiert, wenn Du das if-else-Konstrukt in den try-Block ziehst. Vielleicht kommst Du drauf, was Du mit der Schleife machen musst.
bin jetzt größtenteils dahinter gekommen danke für eure tipps.. code:
Java:
public class GuessingGame {
public static void main(String[] args) {
System.out.println("Welcome!");
int zahl = 0;
long zufallszahl;
Scanner scanner = new Scanner(System.in);
Scanner b = new Scanner(System.in);
System.out.println("Please enter your guess:");
try {
while (true) {
zufallszahl = Math.round(Math.random() * 100);
zahl = scanner.nextInt();
while (zahl != zufallszahl) {
if (zahl < zufallszahl) {
System.out.println("Too small! ");
zahl = scanner.nextInt();
} else {
System.out.println("Too big ");
zahl = scanner.nextInt();
}
}
System.out.println("You win");
System.out.println("Neue Runde?");
String y = b.next();
if (y.equals("n")) {
break;
}
if (y.equals("y")) {
continue;
}
}
}
catch (InputMismatchException e){
System.out.println("Fehler");
}
}
}
letzte frage: der catch befehl ist nicht mehr in der bedingung daher kann ich kein continue benutzen.. heißt bei fehlerhafter eingabe ist das spiel vorbei.. wenn ich den try block aber um alles rum bau kann ich die catch anweisung doch nicht reinziehen :/ irgendwelche tipps ?
alles klar hab ich jetzt gemacht.. wenn ich danach ein continue mache kommt er in eine endlosschleife mit fehler, daher hab ich davor einen neuen scan befehl für eine neue zahl gemacht, dann gehts leider nicht :/
Mal so als Gedanke: wenn nextInt() eine Exception wirft, dann weil ja gerade kein int "angekommen " ist, daher wirst Du auch was anderes einlesen müssen...