2021-03-29

数组与循环

    //生成6个不重复的2位随机数
    //1、6个
    //2、如何证明不重复
        Random rand = new Random();                     //生成随机数
        final int CAPACITY = 6;                         //确定数组长度为6
        int[] nums = new int[CAPACITY];                 //声明一个名叫nums的int类型的数组
        int index = 0;                                  //声明一个名叫index的int类型的变量
        nums[index++] = 10+rand.nextInt(90);            //给数集随机输入一个元素
        for(int temp,j;index<CAPACITY;) {
            temp = 10 + rand.nextInt(90);               //随机生成一个叫temp的int类型的变量
            for (j = 0; j < index; j++) {
                if (temp == nums[j]) {
                    break;
                }                                       //temp和nums比较是否相等,若相等则跳出内循环
            }
            if (j == index) {
                nums[index++] = temp;                   //若不等则将temp的值赋值给数集,然后开始下一个循环
            }
        }                                               //外循环:与之前已经赋过值的比较是否重复
        for(index =0;index<CAPACITY;index++){
            System.out.println(nums[index]);
        }


       for(int t:nums){
            System.out.println(t);
        }

    //1~10000之间的质数
    //最小的质数为2
    //证明质数:验证从2~Math.sqrt(num)中的质数即可
        /*final int CAPACITY = 10000;                       //声明一个int类型的名叫CAPACITY的常量
        int[] pns = new int[CAPACITY];                      //声明一个int类型的名叫pns的数列
        int index = 0,count =0;
        pns[index++] = 2;                                   //pns[0] = 2;
        for(int i =3;i<=CAPACITY;i++){
            boolean isPN = true;                            //定义一个boolean类型的变量,标记外层循环数是否为质数,默认设置为true。
            for(int j = 0;pns[j]<=Math.sqrt(i);j++){
                count++;
                if(i%pns[j]==0){
                    isPN = false;
                    break;
                }                                           //内层循环结束后,如果该标记还为true时,即被除数为质数。
            }
            if(isPN){
                pns[index++] = i;
            }
        }
        System.out.println("loop number:"+count);			
        System.out.println("prime number count:"+(index+1));
         for(int i =0;i<index;i++){
             System.out.print(pns[i]+"\t");
                if((i+1)%10==0){
                 System.out.println();
                }
         }

//生成10个0——100之间的整数成绩,求最大成绩,最小成绩,前三名成绩

Random rand = new Random();
        final int CAPACITY = 10;
        int [] scores = new int[CAPACITY];                         //声明一个长度为10的数组
        double avgScore = 0;
        int i = 0;
        scores[i++] = rand.nextInt(101);                  //scores[o] = 随机生成一个数,i= 1;
*/
/*
            拿新元素和尾元素(有序数组最后一个元素,值最大的的元素)比较,如果大,则插入队尾
            否则,依次从队尾你像比较,找到第一个比新元素小的值所在的下标
            找到了:则新值插在其右侧:j+1,此时循环必须结束
            找不到:则新值插入到第一个位置
*/


/*
        for(int temp,j;i<scores.length;i++){
            temp = rand.nextInt(101);                     //生成一个int类型的叫temp的变量并赋值
            avgScore += temp;                                     //平均成绩=总成绩/人数
            if(temp>=scores[i-1]){
                scores[i] = temp;
                continue;
            }                                                     //生成的temp变量的值与之前生成的scores[0]比较,若大于则替代之
            for(j = i-1;j >=0 && scores[j]>temp;j--) {            //j >=0 && scores[j]>temp;j--   优化
                scores[j+1] = scores[j];
            }                                                     //当出现更大的数值时,数组里的元素要往后推一位
            scores[j+1] = temp;                                   //把temp的值赋给j+1

        }

        System.out.println("AVG="+(avgScore-scores[0]-scores[CAPACITY-1])/(CAPACITY-2));
        for (int score :scores) {
            System.out.println(score);
        }

//有序数组中插入元素

        Scanner input = new Scanner(System.in);
        char[] as = {(char)0,'c','f','h','j','l','x'};//char (char)0    String null
        System.out.println("请输入字符:");
        char insert = input.next().charAt(0);

        //寻找插入位置:
         i = 0;
        for(i =1;i <as.length && as[i]<insert;i++){
                as[i-1] = as[i];
            }
        as[i-1] = insert;

        for (char c : as){
        System.out.println(c);
        }
         for(int j = 1;j<=3;j++){
            System.out.println(scores[CAPACITY-j]);
        }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值