猜猜随机数

时间:2017-01-23 08:07:19

标签: java

我正在学习Java,至少我正在努力。 现在我做了一个应用程序,你需要猜测用math.random生成的随机数。

以下是代码:

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!");
    }
}

现在有一个问题,每次你猜它是对的,你不能猜错。 我无法弄清楚问题..它必须非常简单。

2 个答案:

答案 0 :(得分:6)

你需要理解这个陈述:

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

这意味着:

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

但你想要的是

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

这就是我们所说的循环。这与if类似,但仅在条件为假时退出语句。

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

如果条件为真,if仅执行一次块语句。

while将执行该块,直到条件为假。

注意:由于循环仅在条件为假时结束(不完全为真,某些关键字可以退出,但这是另一个主题),最终可能会出现无限循环,这意味着条件永远不会假的。

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

答案 1 :(得分:2)

您只需将if语句替换为while循环:

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

在自然语言中可以转换为"虽然您的猜测与随机数不同,但请继续尝试"。 如果只使用if,{}括号内的代码只有在条件为真时才会执行,但之后程序将继续执行代码中System.out.println("Goed geraden!");的下一条指令。