2017-01-23 7 views
0

Ich bin dabei, Java zu lernen, zumindest versuche ich es. Jetzt habe ich eine App gemacht, wo Sie die mit math.random generierte Zufallszahl erraten müssen. HierZufallszahl erraten

ist der Code:

import java.util.Scanner; 

public class var { 
    public static void main(String[] args) { 

     Scanner keyboard = new Scanner(System.in); 
     //var definitie 
     int player; 
     int rnummer; 

     rnummer = (int) (Math.random() * 50 + 1); 

     System.out.println("Raad het nummer!"); 
     player = keyboard.nextInt(); 
     System.out.println(rnummer); 

     //goed geraden check 
     if (player == rnummer) { 
      System.out.println("Helaas, dat is niet juist."); 
      player = keyboard.nextInt(); 
     } 
     System.out.println("Goed geraden!"); 
    } 
} 

Jetzt gibt es ein Problem, bei dem jedes Mal, wenn Sie erraten es richtig ist, kann man nichts falsch erraten kann. Ich kann das Problem nicht herausfinden .. es muss sehr einfach sein.

+0

Was meinst du mit 'jedes Mal, wenn du glaubst, dass es richtig ist, kannst du nicht falsch raten'? –

+0

Der Fluss scheint recht einfach zu sein: Wenn die Nummer korrekt war (==), wird eine Fehlermeldung angezeigt ("dat is niet juist.") Und dann wird eine andere Nummer gelesen. Dann wird der positive Ausgang angezeigt ("Goed geraden!"). – BurninLeo

+0

Trotzdem, egal welche Zahl ich eintippe, ist immer gut, auch wenn ich die zufällig generierte Zahl drucke und etwas anderes als das schreibe. – Luukwa

Antwort

6

Sie müssen diese Aussage verstehen:

if (player == rnummer) 
{ 
    System.out.println("Helaas, dat is niet juist."); 
    player = keyboard.nextInt(); 
} 

Das bedeutet:

if player is equals to rnummer 
then 
    print "Helaas, dat is niet juist." 
    ask a value and store it in player 
and read the next line 

Aber was Sie wollen, ist

if player is NOT equals to rnummer 
then 
    print "Helaas, dat is niet juist." 
    ask a value and store it in player 
check again the condition 

Dies ist, was wir eine Schleife nennen. Dies ist ähnlich wie ein if, aber wird die Anweisung nur verlassen, wenn die Bedingung falsch ist.

while(player != rnummer) 
{ 
    System.out.println("Helaas, dat is niet juist."); 
    player = keyboard.nextInt(); 
} 

Ein if nur die Blockanweisung einmal ausgeführt, wenn die Bedingung erfüllt ist.

Eine while führt den Block aus, bis die Bedingung falsch ist.

HINWEIS: Da eine Schleife nur endet, wenn die Bedingung falsch ist (nicht ganz richtig, einige Schlüsselwörter können diese verlassen, aber dies ist ein anderes Thema), können Sie mit einer Endlosschleife enden, dh die Bedingung wird NIE falsch sein.

while(true){ 
    //Statement 
} 
// Unreachable code 
+0

Das macht es ziemlich einfach zu verstehen, wünschte, es gäbe mehr Websites/Bücher, die es erklären würde Das. – Luukwa

+1

@Luukwa Da gibt es Lehrer;) – AxelH

+0

@Luukwa, ich habe nur einen kleinen Kommentar über While-Schleife hinzugefügt, sollte dies interessant sein, einige unerwartete Bug zu verhindern;) – AxelH

2

Sie müssen lediglich die if Anweisung mit einer while Schleife ersetzen:

while (player != rnummer) { 
    System.out.println("Helaas, dat is niet juist."); 
    player = keyboard.nextInt(); 
} 

dass in natual Sprache tranlated wird in „Während Ihre Vermutung aus der Zufallszahl ist anders, immer wieder versuchen“. Wenn Sie nur ein if verwenden, wird der Code innerhalb der Klammern {} nur ausgeführt, wenn die Bedingung wahr ist, aber danach wird das Programm mit der nächsten Anweisung fortfahren, die System.out.println("Goed geraden!"); in Ihrem Code ist.

+0

Das scheint es behoben zu haben, danke! Noch nicht in loops .. deswegen habe ich ein if benutzt. – Luukwa

+0

@Luukwa kein Problem, wir sind alle hier zu lernen ^^ Ich habe eine kurze Erklärung hinzugefügt, ich hoffe es kann nützlich sein :) – SimoV8