我遇到这个问题,我需要生成一个具有相同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();
}
}
答案 0 :(得分:0)
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(含)之间的独立随机数。
P.S。在createNum()
的代码中,您还有另一个可疑循环。但是,这个似乎是无害的,因为它只是为randomNumbers[0]
指定了第二个随机数。