【发布时间】:2019-03-12 20:54:37
【问题描述】:
这个程序的目标是让 A2[] 以随机顺序显示数字 1-10。它需要在没有任何基础知识的情况下完成。 A2[] 从 A1[] 中获取数字,A1[] 数组依次存储数字 1-10。程序在其当前状态下运行,但不会过滤掉已经存储在 A2[] 中的结果。例如.... 4,2,3,7,5,9,7,1,4 应该不能成为结果。应该只显示 1-10 的随机顺序,每个 int 只出现一次。任何帮助是极大的赞赏。目前代码如下:`
public class W07problem07 {
public static int getRandomIntRange(int min, int max) {
int x = (int) (Math.random() * ((max - min))) + min;
return x;
}
public static void main(String[] args) {
int ranNum;
int count = 1;
int[] A1 = new int[10];
int[] A2 = new int[10];
//loop for storing 1-10 int number withing A1[].
for (int k = 0; k < A1.length; k++) {
A1[k] = count;
count++;
}
for (int k = 0; k < A2.length; k++) {
A2[k] = k;
}
for (int j = 0; j < A2.length; j++) {
int a;
ranNum = getRandomIntRange(0, A2.length);
a = A2[j];
if(a==ranNum){
j--;
} else{
A2[j]= A1[ranNum];
}
}
for (int k = 0; k < A2.length; k++) {
System.out.println(A2[k]);
}
}
}
`
【问题讨论】:
-
类似,但我只能使用 A1[] 和 A2[]。它是一个用于课堂的硬件,我们还没有讨论过该线程中的任何内容。
-
由于您的源数组只有 1-10 之间的数字,您可以使用超出此范围的数字填充目标数组,例如 -1(这称为标记值)。然后,对于源数组中的每个数字,选择一个随机目标数组索引并检查它是否可用(其中包含 -1)。继续选择新索引,直到找到可用的插槽。
-
哦!!!我没有想到这一点。我现在就试一试,看看效果如何。谢谢!
标签: java arrays random numbers numeric