首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我的Java程序不能产生固定数量的随机数?

为什么我的Java程序不能产生固定数量的随机数?
EN

Stack Overflow用户
提问于 2018-10-02 13:06:32
回答 2查看 68关注 0票数 -2

我对Java非常陌生,大多数时候我都不知道我在做什么。我正在尝试编写一个代码,你可以选择生成多少个数字,生成的随机数的最大值和最小值。

它会无限地生成最大和最小范围内的数字。

代码语言:javascript
复制
import java.util.Scanner;
import java.util.Random;
public class random_unfinished {
  public static void main(String[] args) {
    int numofgen, max, min, generated, avg, i;
    Scanner scan = new Scanner(System.in);
    Random random = new Random();
    System.out.println("How many numbers would you like to     generate?");
    numofgen = scan.nextInt();
    System.out.println("What is the maximum number?");
    max = scan.nextInt() + 1;
    System.out.println("What is the minimum number?");
    min = scan.nextInt();
    for (int value = min; value <= max;) {
      value = random.nextInt(max - min) + min;
      System.out.println("numbers are " + value);
    }
  }
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-02 13:17:00

好吧,所以for循环是有问题的。

习惯这一点:

代码语言:javascript
复制
for (int i = 0; i < n; i++) {

如果您的for循环看起来不是这样,除非您非常高级,否则您可能做错了。

例如,在您的示例中:

代码语言:javascript
复制
    for (int value = min; value <= max;) {

您可以将一个名为value的变量初始化为最小值。接下来的测试是value是否小于max (除非min大于max),每次执行循环体后所做的事情是...没什么。

因此你会无限地循环。

与黄金标准进行比较:

代码语言:javascript
复制
for (int i = 0; i < n; i++) {

它将变量i初始化为0,它的测试是,如果i小于某个数字n,那么在每次执行循环体之后,它会递增i。

因此,除非我们对i做了一些恶作剧的事情(或者提前退出,中断或返回),否则我们将重复n次循环体。

Cf:

代码语言:javascript
复制
    for (int value = min; value <= max; [_____you forgot this bit____] ) {
票数 2
EN

Stack Overflow用户

发布于 2018-10-02 13:16:57

问题是,您的for循环将从min转到max。此外,它还缺少update子句-这意味着value永远不会更改。因此,您会陷入无限循环。

相反,您应该从0转到numofgen,并确保每次将您的i更新1。这将生成用户所需的任意数量的数字。

代码语言:javascript
复制
import java.util.Scanner;
import java.util.Random;
public class random_unfinished {
  public static void main(String[] args) {
    int numofgen, max, min, generated, avg, i;
    Scanner scan = new Scanner(System.in);
    Random random = new Random();
    System.out.println("How many numbers would you like to     generate?");
    numofgen = scan.nextInt();
    System.out.println("What is the maximum number?");
    max = scan.nextInt() + 1;
    System.out.println("What is the minimum number?");
    min = scan.nextInt();
    for (int i = 0; i < numofgen; i++) {
      value = random.nextInt(max - min) + min;
      System.out.println("numbers are " + value);
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52602315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档