数组练习题

逢7跳过、数组元素求和、判断两数组是否相等、查找元素在数组中的索引
数组元素反转、评委打分、随机产生验证码

public class hellloWorld {
    public static void main(String[] args) {
        int[] arr ={1, 2, 3, 4, 5, 6,4,4};
        //fengqiguo();
        //getSum(arr);
        int[] arr1={1,2,3,4};
        int[] arr2={1,2,4,4};

        //boolean result=isEqual(arr1,arr2);//接收结果
        //System.out.println(result);

        //测试索引
        //int ss=searchIndex(arr);
        //System.out.println(ss);

        //测试重复索引
//        int[] indexx=searchIndex2(4,arr);
//
//        if(indexx.length==0)
//            System.out.println("数组中不存在该元素");
//        else
//            for (int i = 0; i < indexx.length; i++) {
//                System.out.println(indexx[i]);
//            }

        //测试反转数组
//        int[] arr3 ={1, 2, 3, 4, 5, 6,7,8};
        int[] swap=Reverse(arr3);
        for (int i = 0; i < swap.length; i++) {
            System.out.println(swap[i]);
        }
        //测试评委打分
//        int mark=mark();
//        System.out.println("成绩为:"+mark);

        //验证码测试
        generateRandom();
    }

    public static void fengqiguo(){
        //逢7跳过 1-100
    /*分析:
        1.循环获取1-100之间的每一个数字
        2.数值拆分,拆分出十位、个位
        3.根据规则加入 if 判断
            if (ge==7||shi==7 ||i&7==0)
        4.打印出满足要求的数据
    */
        for(int i=1;i<=100;i++){
            int ge = i%10;
            int shi = i/10%10;
            if(ge==7 ||shi==7||i%7==0){
                System.out.println(i);
            }
        }
    }

    //数组求和
    public static int getSum(int arr[]){
        int sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        System.out.println("数组求和结果为"+sum);
        return sum;
    }

    //判断两个数组是否相等_长度、内容、顺序完全相同
    /*
    ==:
        1.基本数据类型:比较数据值
        2.引用数据类型:比较地址值
     */
    public static boolean isEqual(int[] arr1,int[] arr2){
        //1.比较数组的长度
        if(arr1.length !=arr2.length){
            return false;
        }
        //2.比较数组中每一个元素的内容
        for (int i = 0; i < arr1.length; i++) {
            if(arr1[i]!=arr2[i]){
                return false;
            }
        }
        return true;
    }

    //查找元素在数组中的索引
    public static int searchIndex(int arr[]){
        /*
        需求:
            已知一个数组,键盘录入一个数据,查找该数据在数组中的索引,
            并在控制台输出索引值,如果没有查到,输出-1
         */
        Scanner sc=new Scanner(System.in);
        int k=-1;
        int a = sc.nextInt();
        for (int i = 0; i < arr.length; i++) {
            if (a == arr[i]) {
                k = i;
                break;
            }
        }
        return k;
    }

    //查找元素索引,考虑重复情况
    public static int[] searchIndex2(int a, int[] arr){
        int count = 0;
        //1.统计要查找的数在数组中的个数
        for (int i = 0; i < arr.length; i++) {
            if(a==arr[i]){
                count++;
            }
        }
        int[] indexx=new int[count] ;
        int index =0;
        //2.记录地址,把地址记录到数组中,然后统一返回
        for (int i = 0; i < arr.length; i++) {
            if(a==arr[i]){
                indexx[index]=i;
                index++;
            }
        }
        return indexx;
    }

    //数组元素反转1-  数组里面的元素值交换 -方法一
    // ^ 异或符号,相同为false,不同为 true
    public static int[] Reverse(int[]arr){
        int temp=0;
        for (int i = 0; i < arr.length/2; i++) {
            temp=arr[i];
            arr[i]=arr[arr.length-i-1];
            arr[arr.length-i-1]=temp;
        }
        return arr;
    }

    //数据反转方法二,定义两个指针
    public static int[] swap(int arr[]){
        int start=0,end=arr.length-1;
        for (;start<end;start++,end--) {
            int temp=arr[start];
            arr[start]=arr[end];
            arr[end]=temp;
        }
        return arr;
    }

    // 评委打分
    /*
     需求:
       六个人打分,分数为0-100之间的整数值
       去掉最高和最低,求剩下的平均值

      分析:
        1.键盘录入六个数字;
        2.将六个数字存到数组中,数组动态初始化;

     */
    public static int mark(){
        //1.录入
        int[] arr = new int[6];
        Scanner sc=new Scanner(System.in);
        System.out.println("输入六个评委打分结果:");
        for (int i = 0; i < arr.length; i++) {
            System.out.println("输入第"+(i+1)+"位评委打分的结果:");
            int score = sc.nextInt();
            //提高健壮性-
            //判断数据是否合法
            if(score>0&&score<=100){
                arr[i]=score;
            }
            else{
                System.out.println("输入数据有误,重新输入");
                i--;
            }
        }
        //2.求和
        int sum=0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        //3.找到最大
        int max=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(max<arr[i]){
                max=arr[i];
            }
        }
        //4.找到最小
        int min=arr[0];
        for (int i = 0; i < arr.length; i++) {
            if(min>arr[i]){
                min=arr[i];
            }
        }
        //5.平均 和-最大-最小 /4
        int avg=(sum-min-max)/arr.length-2;

        return avg;
    }

    // 随机产生验证码
    public static void generateRandom(){
        //将26个字母大小写和数字0-9存入到 数组中
        char[] chs = new char[26+26+10];

        int index=0;
        for(char c='a';c<='z';c++){
            chs[index]=c;
            index++;
        }

        for(char c='A';c<='Z';c++){
            chs[index]=c;
            index++;
        }

        for(char c='0';c<='9';c++){
            chs[index]=c;
            index++;
        }


        //产生验证码
        Random r = new Random();
        String CheckCode="";
        for(int i=1;i<=5;i++){
            int randomIndex = r.nextInt(chs.length);
            CheckCode+=chs[randomIndex];
        }
        System.out.println("验证码:"+CheckCode);


    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值