产生随机数但有一些小错误

时间:2018-11-21 14:11:31

标签: java

我确实查看了与随机相关的线程,并将其实现到此作业中,但是我有两个问题。

1)我需要我的程序来生成随机数(并打印它们)并计算迭代次数。我已经计算了迭代次数,但是我不知道为什么随机数没有打印出来。它与我的猜测= 0有关吗?如果我不清楚,这是一个例子。

Example: 
Enter a number: 13
85
89
73
94
13
This took 5 tries

2)我不知道为什么我的程序总是以一个数字卡住答案。输入数字86后,程序立即结束。

import java.util.*; 

public class FeelingLucky { 
    public static void main (String [] args) { 
        Scanner sc = new Scanner (System.in); 

        int tries = 0; 
        int guess = 0;

        Random random = new Random(1); 
        int num = random.nextInt(100) + 1; 

        System.out.print("Pick a number between 1 and 100:"); 

        while (guess != num) { 
            guess = sc.nextInt(); 
            tries++; 
        }
        System.out.println("It took " + tries + " tries to match"); 
        sc.close();
    }
}

3 个答案:

答案 0 :(得分:3)

Random(1)在构造函数中使用种子,该种子总是相同的。仅使用Random()-无需参数构造函数。

import java.util.*;

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

    Scanner sc = new Scanner(System.in);

    int tries = 0;
    int guess = 0;

    Random random = new Random(); // No seed
    int num = random.nextInt(100) + 1;

    System.out.print("Pick a number between 1 and 100:");

    while (guess != num) {
        guess = sc.nextInt();
        tries++;
    }
    System.out.println("It took " + tries + " tries to match");
    sc.close();

}
}

enter image description here

请参见Java random always returns the same number when I set the seed?

答案 1 :(得分:0)

您仅在nextInt()对象上调用过Random,所以只生成了一个随机数。在循环内部,您在扫描器上调用nextInt(),该扫描器正在从System.in中读取数据,因此您的程序暂停并等待用户每次在循环中再次输入数字。

如果您希望用户一次输入一个数字,然后让用户随机输入以生成数字直到匹配,则需要在循环内交换哪个被称为。要打印正在生成的随机数,您需要在循环中添加一个打印语句,以打印该当前数。

答案 2 :(得分:0)

while (guess != num) {
    num = random.nextInt(100) + 1;
    guess = sc.nextInt();
    System.out.printf("you guessed: %d the number was %d%n",guess, num);

    tries++;
}

每次都会打印出一个,每次 都会猜测一个新的随机数。