有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从20个整数的数组中生成额外的随机数

我有这个问题,我需要生成一个额外的单一随机数,具有相同的1-10跨度。我已经有了随机生成器的代码,它可以生成我的20个整数随机数数组,但是我如何在相同的方法中在相同的范围内生成单个随机数呢。这就是我到目前为止得到的结果,它不断地从我的20整数数组中给我随机数0。提前谢谢

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();
}
}

共 (1) 个答案

  1. # 1 楼答案

    {}中的这个循环看起来可疑:

    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]分配了第二个随机数