8月5日进展 看书看到了110页

把书中的listing 3-7自己写了一下。仅仅留作纪念,请看官不要往下看。



/**

输入部分:
用户输入整数数组的大小,用此信息生成一个整数数组numbers。数组大小为n,元素从 1~n
用户输入另外一个整数数组(results),大小k,元素将随机从numbers中抽取。

从numbers中随机抽取k个不相同的元素
循环k次(0~k):
1)生成1个整数r,范围在0~n(n是动态的)
2)以r为numbers的下标,将numbers[r]赋值到resutls[k]中
3)剔除numbers[r]--将numbers[n-1]的值放入numbers[r],numbers数组的size缩小1。

排序和打印
*/


import java.util.*;


public class DrawLottery{
public static void main(String[] args){ //static不要写错
//读取数字
Scanner in=new Scanner(System.in);//括号里面要写System.in
System.out.print("您要从多少个数字中选(n)?");
int n=in.nextInt();
System.out.print("您要从多少个数字中选(k)?");
int k=in.nextInt();

//构造数组
int[] numbers=new int[n];
for (int i=0;i<n;i++){ //for循环的时候,一定要加上int,不然会出现“找不到符号”错误
numbers[i]=i+1;
}
int[] results=new int[k];


/* 初始化在下面的循环中做,这里不用做
for (int i=0;i<k;i++){
results[i]=n+1;//resutls数组中的数都用n+1填充
}
*/

//draw k elements from n elements;
int r=0;
for(int i=0;i<k;i++){
//注意这里有个类型转换,
//而且random是带括号的,random().
//而且整个Math都要带括号,不然随机数都是0。因为类型转换的优先级也比较高
r=(int)(Math.random()*n); 
System.out.println("这是每次r的值:"+r); //用来检验随机数是不是随机
results[i]=numbers[r];
numbers[r]=numbers[n-1];
n--;
}

//sort and print
System.out.println("下面是numbers的元素");
for(int sh:numbers) System.out.print(" "+sh);

Arrays.sort(results);
System.out.println("下面是results的元素");
for(int sh:results) System.out.print(" "+sh);

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值