Java中的随机数生成器

Java中的随机数生成器,java,random,Java,Random,我正在写一个程序,它将像一个神奇的8球一样工作。它询问一个问题,然后从我输入的20个答案中随机打印出一个答案。它没有显示编码中的任何错误,但是当我运行它时,程序工作得非常完美,直到需要打印随机响应为止。这是一个家庭作业,所以我不想找人来纠正它,但我正试图弄清楚如何让它工作。谢谢你,我感谢你的帮助 import java.util.Scanner; public class MagicBall { public static void main(String[] args)

我正在写一个程序,它将像一个神奇的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");
    }
}

是什么让你认为这个问题是一个浮点数?

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

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


请参见

您的代码适用于我,但它强制您输入双精度(例如123.456)。您应该更改:

double question = input.nextDouble();
致:


此外,您可能希望使用switch语句而不是所有这些ifs。

Apache commons非常有用:

RandomUtils.nextInt(maxVal);

这就是为什么上帝发明了开关语句。。。。或者数组查找:-)…在本文中,哪个做的完全相同?谢谢。我把它改成了String而不是double,这样就行了。我打算用switch语句,但这是这门课的第一个家庭作业,我不想用任何还没有涉及到的东西。是的,我不知道为什么我要用double。我把它改成了字符串,它成功了。
String question = input.nextLine();
RandomUtils.nextInt(maxVal);