【问题标题】:Generate additional random number from array of 20 integers从 20 个整数的数组中生成额外的随机数
【发布时间】:2016-04-12 18:45:54
【问题描述】:

我遇到了麻烦,我需要生成一个额外的具有相同 1-10 跨度的单个随机数。我已经有了生成随机数的 20 个整数数组的随机生成器的代码,但是如何在相同的方法中在相同的跨度中生成单个随机数。这是我到目前为止所拥有的,它不断给我随机数 0:来自我的 20 个整数数组。提前致谢。

import java.util.Scanner;
import java.util.Random;
class Main{
 public static final Random RND_GEN = new Random();
   public int[] createNum(int[] randomNumbers) {
    for (int i = 0; i < randomNumbers.length; i++) {
        randomNumbers[i] = RND_GEN.nextInt(10) + 1;
    }
    for (int i = 0; i < 1 ; i++){
    randomNumbers[i] = RND_GEN.nextInt(10) + 1;

    }

    return randomNumbers;
}

public void printNum(int[] randomNumbers){
    for (int i = 0; i < randomNumbers.length; i++) {
        System.out.println("Number " + i + " : " + randomNumbers[i]);
    }
    for (int i = 0; i < 1; i++){
    System.out.println("Single # is: "+randomNumbers[i]); 
}
}
public void searchArray(int[] randomNumbers, int numSearch) {
int count = 0;

for (int i : randomNumbers) {
    if (i == numSearch) {
        count++;
    }
}
if (count == 0) {
    System.out.println("Number # " + numSearch + " was not found!");
} else {
    System.out.println("Number #" + numSearch + " occurred " + count + "              times.");
}
}





public void run() {
    Scanner inputReader = new Scanner(System.in);
    int x = 1;
    do {
        int[] numbers = new int[20];
        numbers = createNum(numbers);
        printNum(numbers);

        System.out.print("Restart Program?, Enter 1 for YES, 2 for NO: ");
        x = inputReader.nextInt();
    } while (x == 1);
}

public static void main(String[] args) {
    Main go = new Main();
    go.run();
}
}

【问题讨论】:

  • @robotlos 我一直在努力达到这一点,也许我的大脑因整天盯着这个问题而被煎炸但我迷失了,应该没有追索权试图寻求当涉及到这些东西时,其他比我更有才华的人的帮助
  • @kidbone222,通过您的问题,您所问的大部分(如果不是全部)问题都可以通过快速的 Google 搜索得到回答。寻求帮助和让别人做你的任务是有区别的。
  • @Ceelos,我不是要求任何人做我的硬件,问题是你可以整天谷歌搜索,但如果你不明白你在看什么,那么它就会变成一场持续的斗争。当像你们这样了解代码在做什么和需要做什么的绅士解释时,我通过查看该做什么的示例来学习最好
  • @Ceelos - 很难看出谷歌搜索会如何帮助解决这个问题。这不是如何生成随机数的问题;这是代码循环结构的逻辑问题。

标签: java arrays random methods


【解决方案1】:

printNum() 中的这个循环看起来很可疑:

for (int i = 0; i < 1; i++){
    System.out.println("Single # is: "+randomNumbers[i]); 
}

它将始终打印randomNumbers 的第一个元素。不清楚你想要什么,但如果我不得不猜测它会是:

int i = RND_GEN.nextInt(randomNumbers.length);
System.out.println("Single # is: " + randomNumbers[i]);

这将打印randomNumbers 的一些随机元素。或者也许:

int i = 1 + RND_GEN.nextInt(10);
System.out.println("Single # is: " + i);

这将打印一个介于 1 和 10(含)之间的独立随机数。

附:在createNum() 的代码中,您还有另一个可疑循环。但是,这似乎是无害的,因为它只是将第二个随机数分配给 randomNumbers[0]

【讨论】:

  • 这就是数字不必来自先前生成的随机数数组,它只需是 1-10 之间的数字。我的循环只会打印一个已经在第一个 20 个整数数组中的数字@ Ted Hopp
  • @kidbone222 - 循环将打印randomNumbers 的第一个元素。也许你想要的是System.out.println("Single # is: " + (RND_GEN.nextInt(10) + 1));
  • 有没有办法重写循环,使其不打印出 randomNumbers 的第一个元素并打印出随机数? @特德霍普
  • @kidbone222 - 既然循环只执行一次,为什么还要有一个循环呢?只需打印出一个随机数(正如我在回答的编辑中建议的那样)。
  • 谢谢@Ted Hopp,我一直在使用另一个循环,因为这是我生成第一个数字的方式,我无法看到它是如何工作的
猜你喜欢
  • 2010-12-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 2018-04-16
  • 2012-11-25
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多