魔术8球程序循环?

时间:2017-04-27 23:53:25

标签: java random while-loop

我创造了一个简单的魔术8球程序。但问题是我每次编译程序并运行循环时循环都会重复相同的随机答案。问题不在于循环继续进行,当我编译并运行它时,程序会给出一个随机的答案,但一直重复相同的答案,直到我重新编译文件。

import java.util.Random;
import java.util.Scanner;

public class Moreloopex4 {

    public Moreloopex4() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) {
        // Declaring Random
        Random rand = new Random();

        // Declaring scanner
        Scanner scan = new Scanner(System. in );

        // Declaring variables
        String input;
        int randnum;

        // Declaring randomizer
        randnum = rand.nextInt(6) + 0;

        // Conditional Statements
        while (true) {
            System.out.println("Enter your statement");
            input = scan.nextLine();
            if (randnum == 0) {
                System.out.println("Without a doubt ");
            }
            else if (randnum == 1) {
                System.out.println("I cannot predict now");
            }
            else if (randnum == 2) {
                System.out.println("My sources say no");
            }
            else if (randnum == 3) {
                System.out.println("Signs point to yes");
            }
            else if (randnum == 4) {
                System.out.println("Don't count on it");
            }
            else if (randnum == 5) {
                System.out.println("Better not tell you now");
            }
            else if (randnum == 6) {
                System.out.println("Yes, definetly");
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您只需指定一个随机值,此处为:

randnum = rand.nextInt(6) + 0;

在循环之外,然后从循环内部引用定义的变量。

您想要做的是每次需要时调用一个新的随机数,这是每次while循环重复时。您可以将上面的行移动到while循环的内部。

答案 1 :(得分:3)

您只设置一次randnum变量,因此它将继续使用该值,除非您在while循环中再次设置它。每次检查randnum时,只声明一次并不会继续获得新的随机数。你需要在while循环中获得一个新值,方法是再次将它赋值给rand.nextInt(6)。

此代码

...
randnum = rand.nextInt(6)+0;

// Conditional Statements
while(true)
{

...

成为这个

...

// Conditional Statements
while(true)
{

    randnum = rand.nextInt(6)+0;
...