2021/7/22-循环应用

7.1 (易)设计一个方法,找出一个数组中最大的数字,连同所在的下标一起输出。
public void test35(){
        int[] ints = new int[]{2,1,11,4,99,50};
        int max = ints[0];
        int maxIndex = 0;
        for (int i = 1; i < ints.length; i++) {
            if(max<ints[i]){
                max = ints[i];
                maxIndex = i;
            }
        }
        System.out.printf("最大值和最大值的下标为%d %d\n",max,maxIndex);
    }
7.2 (中)设计一个方法,判断一个数组是不是一个升序的数组。
public void test36(){
        int[] ints = new int[]{1,2,2,3,9,50};
        boolean b = true;
        for (int i = 0; i < ints.length-1; i++) {
            if(ints[i]>ints[i+1]){
                b = false;
                break;
            }
        }
        if(!b){
            System.out.println("该数组不是升序");
        }else System.out.println("该数组是升序");
    }
7.3 (难)设计一个方法,找出一个整型数组中的第二大的值。 1. 不可以通过排序实现,不能修改数组中的数据顺序 2. 要考虑到最大的数字可能出现多次
public void test37(){
        int[] ints = new int[]{34,23,58,1,2,2,3,9,50};
        int max = ints[0];
        int maxIndex = 0;
        int maxCount = 1;
        int max1 = max;
        for (int i = 1; i < ints.length; i++) {
            if(max<ints[i]){
                max = ints[i];
                maxCount = 1;
                maxIndex = i;
            }else if(max == ints[i]){
                maxCount++;
            }
        }
        if(maxCount==2){
            max1 = max;
        }else {
            for (int i = 1; i < ints.length; i++) {
                if(max1<ints[i]&&i!=maxIndex){
                    max1 = ints[i];
                }
            }
        }
        System.out.printf("最大的数和第二大的数分别是%d %d\n",max,max1);
    }
7.4 (中)设计一个方法,将一个数组中的元素倒序排列(注意,不是降序)。
public void test38(){
        int[] ints = new int[]{34,23,58,1,2,2,3,9,50};
        int length = ints.length;
        int[] ints1 = new int[length];
        for (int i = 0; i < length; i++) {
            ints1[i] = ints[length-1-i];
            System.out.println(ints1[i]);
        }
    }
7.5 (易)将一个数组中的元素拷贝到另外一个数组中。
public void test39(){
        int[] ints = new int[]{34,23,58,1,2,2,3,9,50};
        int length = ints.length;
        int[] ints1 = new int[length];
        for (int i = 0; i < length; i++) {
            ints1[i] = ints[i];
            System.out.println(ints1[i]);
        }
    }
7.6 (易)设计一个方法,比较两个数组中的元素是否相同(数量、每一个元素都相同,才 认为是相同的数组)。
@Test
    public void test40(){
        int[] ints1 = new int[]{34,23,58,1,2,2,3,9,50};
        int[] ints2 = new int[]{3,4,5,6};
        int len1 = ints1.length;
        int len2 = ints2.length;
        boolean b = true;
        if(len1!=len2)
            b=false;
        else {
            for (int i = 0; i < len1; i++) {
                if(ints1[i]!=ints2[i]){
                    b=false;
                    break;
                }
            }
        }
        if(b){
            System.out.println("数组1"+Arrays.toString(ints1));
            System.out.println("数组2"+Arrays.toString(ints2));
            System.out.println("俩个数组元素相同");
        }else {
            System.out.println("数组1"+Arrays.toString(ints1));
            System.out.println("数组2"+Arrays.toString(ints2));
            System.out.println("俩个数组元素不相同");
        }
    }
7.7 (中)使用递归计算一个数组中的元素和。
public void test41(){
        int[] ints = new int[]{1,2,3,89,20};
        System.out.println(sum(ints,ints.length-1));
    }
    public int sum(int[] ints,int i){
        if(i==0){
            return ints[i];
        }
        return sum(ints,i-1)+ints[i];
    }
7.8 (易)小明参加歌手比赛,评委组给出10个成绩,去掉一个最高分,去掉一个最低分,求 平均分
public void test42(){
        int[] ints = new int[]{11,2,3,89,20,12,10,90,90,80};
        int max = ints[0];
        int min = ints[0];
        int sum = ints[0];
        for (int i = 1; i < ints.length; i++) {
            sum+=ints[i];
            if(min>ints[i])
                min = ints[i];
            if(max < ints[i])
                max = ints[i];
        }
        System.out.printf("去掉的最高分和最低分和平均分分别为%d %d %.2f",max,min,(sum-max-min)/8.0f);
    }
7.9 设计一个方法,将一个字符串中的大小写字母翻转。
public void test43(){
        char[] chars = new char[]{'A','p','p','l','e'};
        for (int i = 0; i < chars.length; i++) {
            if(chars[i]>='a'&&chars[i]<='z'){
                chars[i] = (char) (chars[i] - 32);
            }else if(chars[i]>='A'&&chars[i]<='Z'){
                chars[i] = (char) (chars[i] + 32);
            }
            System.out.print(chars[i]);
        }
    }
7.10 模拟实现 System.arraycopy(int[] src, int srcPos, int[] dst, int dstPos, int length);
public void test44(){
        int[] ints1 = new int[]{1,2,3,4};
        int[] ints2 = new int[ints1.length];
        arraycopy(ints1,0,ints2,0,4);
        System.out.println(Arrays.toString(ints2));
    }
    public void arraycopy(int[] src, int srcPos, int[] dst, int dstPos, int length){
        int len1 = src.length;
        int len2 = dst.length;
        for (int i = 0; i < length; i++) {
            if(i+srcPos<len1&&i+dstPos<len2){
                dst[i+dstPos] = src[i+srcPos];
            }else break;
        }
    }
7.11 模拟实现copyOf(int[] array, int newLength)
public void test45(){
        int[] ints = new int[]{1,2,3,4,5};
        int[] ints1 = copyOf(ints, 6);
        System.out.println(Arrays.toString(ints1));
    }
    public int[] copyOf(int[] array, int newLength){
        int[] ints = new int[newLength];
        int len = array.length<newLength?array.length:newLength;
        for(int i = 0; i<len;i++){
            ints[i] = array[i];
        }
        return ints;
    }
7.12 模拟实现String toString(int[] array)
public void test46(){
        int[] ints = new int[]{1,2,3,4,5};
        System.out.println(toString(ints));
    }
    public String toString(int[] array){
        String strs = "";
        for (int i = 0; i < array.length; i++) {
            strs +=array[i];
            strs+=" ";
        }
        return strs;
    }
7.13 已知方法 public static int[] combine(int[] arr1, int[] arr2) 的作用是,合并两个数 组,并对合并后的数组进行升序排序,返回这个数组。实现这个方法。
public void combine(){
        int[] ints1 = new int[]{1,2,3,4,5};
        int[] ints2 = new int[]{4,3,2,1};
        int len1 = ints1.length;
        int len2 = ints2.length;
        int[] ints = new int[len1 + len2];
        for (int i = 0; i <len1+len2 ; i++) {
            if(i<len1){
                ints[i] = ints1[i];
            }else {
                ints[i] = ints2[i-len1];
            }
        }
        for (int i = 0; i <ints.length ; i++) {
            for (int j = 0; j < ints.length-i-1 ; j++) {
                if(ints[j]>ints[j+1]){
                    ints[j] = ints[j]^ints[j+1];
                    ints[j+1] = ints[j]^ints[j+1];
                    ints[j] = ints[j]^ints[j+1];
                }
            }
        }
        System.out.println(Arrays.toString(ints));
    }
7.14 已知方法 public static int[] delete(int[] arr, int ele) 的作用是删除数组中第一次出 现的ele元素,并返回删除后的数组。实现这个方法。
public void test47(){
        int[] ints1 = new int[]{1,2,3,4,5};
        int[] delete = delete(ints1, 0);
        System.out.println(Arrays.toString(delete));
    }
    public static int[] delete(int[] arr, int ele){
        int len = arr.length;
        boolean b = false;
        int i;
        for (i = 0; i <len ; i++) {
            if(arr[i]==ele){
                    b = true;
                    break;
                }
        }
        if(b){
            int[] ints = new int[len - 1];
            for (int j = 0; j < len; j++) {
                if(j<i)
                    ints[j] = arr[j];
                else if(j>i)
                    ints[j-1] = arr[j-1];
            }
            return ints;
        }else return arr;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值