繁体   English   中英

Java中的随机数生成器

[英]Random Number Generator in Java

我正在编写一个程序,它将像魔术8球一样工作。 它会问一个问题,然后从我输入的问题中打印出20条。 它在编码中没有显示任何错误,但是当我运行它时,该程序可以正常运行,直到需要打印随机响应为止。 这是一项家庭作业,所以我不是在找人去纠正它,而是在试图弄清楚如何使它起作用。 谢谢,我感谢您的帮助。

import java.util.Scanner;


public class MagicBall
{

    public static void main(String[] args)
    {

        Scanner input = new Scanner(System.in);
        System.out.println("Please type in a question: ");
        double question = input.nextDouble();


        int number = (int)(Math.random() * 20);

        if (number == 0)
            System.out.println("As I see it, yes");

        if (number == 1)
            System.out.println("It is certain");

        if (number == 2)
            System.out.println("It is decidedly so");

        if (number == 3)
            System.out.println("Most likely");

        if (number == 4)
           System.out.println("Outlook good");

        if (number == 5)
            System.out.println("Signs point to yes");

        if (number == 6)
            System.out.println("Without a doubt");

        if (number == 7)
            System.out.println("Yes");

        if (number == 8)
            System.out.println("Yes – definitely");

        if (number == 9)
            System.out.println("You may rely on it");

        if (number == 10)
            System.out.println("Reply hazy, try again");

        if(number == 11)
            System.out.println("Ask again later");

        if (number == 12)
            System.out.println("Better not tell you now");

        if (number == 13)
            System.out.println("Cannot predict now");

        if (number == 14)
            System.out.println("Concentrate and ask again");

        if (number == 15)
            System.out.println("Don't count on it");

        if (number == 16)
            System.out.println("My reply is no");

        if (number == 17)
            System.out.println("My sources say no");

        if (number == 18)
            System.out.println("Outlook not so good");

        if (number == 19)
            System.out.println("Very doubtful");
    }
}
double question = input.nextDouble();

是什么让您认为问题将是一个浮点数?

Apache Commons非常有用:

RandomUtils.nextInt(maxVal);

您的代码对我有用,但是它迫使您输入一个双精度字符(例如123.456)。 您应该更改:

double question = input.nextDouble();

至:

String question = input.nextLine();

另外,您可能要使用switch语句而不是所有这些ifs。

而不是int number = (int)(Math.random() * 20);

替换为int number = new Random().nextInt(20);

参见http://download.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#nextInt(int)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM