早教吧 育儿知识 作业答案 考试题库 百科 知识分享

LotteryDrawing.java的问题.苦思冥想想不出来numbersr=numbersn-1;n--是怎么解释,Scannerin=newScanner(System.in);System.out.print("Howmanynumbersdoyouneedtodraw:");intk=in.nextInt();System.out.priint("Howmang

题目详情
LotteryDrawing.java的问题.苦思冥想想不出来numbers【r】 = numbers【n-1】;n--是怎么解释,
Scanner in = new Scanner(System.in);
System.out.print("How many numbers do you need to draw:");
int k = in.nextInt();
System.out.priint("How mang highest numbers do you need to draw: ");
int n = in .nextInt();
int[] numbers = new int[n];
for(int i = 0 ; i < numbers.length; i ++)
{
int[i] = i +1;//用1,2,3.n来填满数组;
}
int[] result = new int[k];
for(int i = 0 ; i < result.length ; i ++)
{
int r = (int)(Math.random()*n);
result[i] = numbers[r];//用随机生成的数值作为下标r,进行r+1运算后赋给result[i];
numbers[r] = numbers[n-1];//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
n--;//为了防止出现相同的随机值!这里我就看不懂了.什么意思啊
}
▼优质解答
答案和解析
numbers[r] = numbers[n-1];//
第一次:i=0
如果r==n-1,基本没意义.
如果r< n-1 就把numbers数组中的最后一项值赋给numbers[r],假设n=6,就相当于把numbers[5]赋值给numbers[r].(r>=0),此时的numbers[r]的值就和result[i](即result[0])的值不同了,可以确保numbers数据里面剩余的元素不会和result数组里面的元素重复.
n--,numbers数组里面的元素变为了(n-1)个,就是使r的值范围变成了n-1,依次类推