Java基础题目记录-数组

数组相关题目练习:

题目一:

现在有如下一个数组

    int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
    要求将以上数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组为
    int[] newArr={1,3,4,5,6,6,5,4,7,6,7,5};

方法一:

分析

  • 首先计算出老数组中不为0的元素的个数,即为新数组的长度。
  • 然后定义一个新数组
  • 将老数组中不为0的元素赋给新数组
  • 打印新数组即可

代码实现:

    public static void method4() {
        int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        int len = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] != 0) {
                len++;
            }
        }
        System.out.println("数组不为零的个数为:" + len);
        int[] newArr = new int[len];

        int j = 0;
        for (int i = 0; i < oldArr.length; i++) {
            if (oldArr[i] != 0) {
                newArr[j] = oldArr[i];
                j++;
            }
        }
        System.out.println("新数组打印为:");
        System.out.println(Arrays.toString(newArr));
    }

方法二:

分析:

  • 首先定义一个中间数组arr,假设长度和oldArr一致
  • 把不为0的元素赋给arr
  • 打印中间数组arr
  • 把arr拷贝到newArr,数组长度是不为0元素的个数(index),然后打印newArr即可!

代码实现:

public static void task2() {
        int[] oldArr = {1, 3, 4, 5, 0, 0, 6, 6, 0, 5, 4, 7, 6, 7, 0, 5};
        //首先定义一个中间数组arr,假设长度和oldArr一致
        int[] arr = new int[oldArr.length];
        int index = 0;
        for (int i = 0; i < oldArr.length; i++) {
            //把不为0的元素赋给arr
            if (oldArr[i] != 0) {
                arr[index] = oldArr[i];
                index++;
            }
        }
        //打印arr
        System.out.println(Arrays.toString(arr));
        //把arr拷贝到newArr,数组长度是不为0元素的个数(index)
        int[] newArr = Arrays.copyOf(arr, index);
        System.out.println(Arrays.toString(newArr));
    }

题目二:

int array [] = {2,432,5221,235,2,5352,1,53,5,3,5364,2,2,63,3533,2,53,532,532};

  • 求所有元素和。
  • 输出所有奇数下标元素。如:array[1]
  • 输出所有元素中,值为奇数的。
  • 将所有元素乘二。
  • 将奇数位置元素存到B数组中
  • 偶数元素存到C数组中
  • 分别逆序输出B数组和C数组

代码实现:

package com.codeyancy.qy28.test;

import java.util.Arrays;

public class TaskDemo6 {
    public static void main(String[] args) {
        int[] array = {2, 432, 5221, 235, 2, 5352, 1, 53, 5, 3, 5364, 2, 2, 63, 3533, 2, 53, 532, 532};
        method22(array);
    }
    //求所有元素和。
    public static void method1(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("所有元素和为:" + sum);
    }

    //输出所有奇数下标元素。如:array[1] 方法一:
    public static void method2(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            if (i % 2 != 0) {
                System.out.println("奇数下标元素:" + arr[i]);
            }
        }
    }

    //方法二:(推荐使用)
    public static void method21(int[] arr) {
        for (int i = 1; i < arr.length; i += 2) {
            System.out.println("奇数下标元素:" + arr[i]);
        }
    }

    //输出所有偶数下标元素。如:array[0]
    public static void method22(int[] arr) {
        for (int i = 0; i < arr.length; i += 2) {
            System.out.println("偶数下标元素:" + arr[i]);
        }
    }

    /**
     * 输出所有元素中,值为奇数的
     * 此时不需要数组的索引,使用增强for循环
     */
    public static void method3(int[] arr) {
        for (int a : arr) {
            if (a % 2 != 0) {
                System.out.println(a);
            }
        }
    }

    //将所有元素乘二
    public static void method4(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] = arr[i] * 2;
        }
        System.out.println(Arrays.toString(arr));
    }

    //将奇数位置元素存到B数组中。
    //int[] array = {2,432,5221,235,2,5352,1,53,5,3,5364,2,2,63,3533,2,53,532,532};
    public static void method5(int[] arr) {
        //偶数下标长度
        int evenLength = (arr.length + 1) / 2;
        System.out.println("数组长度:" + arr.length);
        System.out.println("偶数下标的长度:" + evenLength);
        System.out.println("奇数下标的长度:" + (arr.length - evenLength));
        //偶数下标长度 = 奇数位置元素个数(B数组长度)
        int[] bArray = new int[evenLength];
        int bIndex = 0;
        for (int i = 0; i < arr.length; i += 2) {
            bArray[bIndex] = arr[i];
            bIndex++;
        }
        System.out.print("B数组为:");
        System.out.println(Arrays.toString(bArray));
        //B数组逆序输出
        System.out.print("B数组逆序输出:");
        for (int i = bArray.length - 1; i >= 0; i--) {
            System.out.print(bArray[i] + "\t");
        }
    }

    //偶数元素存到C数组中
    public static void method6(int[] arr) {
        int cLength = 0;
        int cIndex = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 == 0) {
                cLength++;
            }
        }
        System.out.println("C数组的长度为:" + cLength);
        int[] cArray = new int[cLength];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] % 2 == 0) {
                cArray[cIndex] = arr[i];
                cIndex++;
            }
        }
        System.out.print("C数组为:");
        System.out.println(Arrays.toString(cArray));
        //C数组逆序输出
        System.out.print("C数组逆序输出:");
        for (int i = cArray.length - 1; i >= 0; i--) {
            System.out.print(cArray[i] + "\t");
        }
    }
}

题目三

在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分

方法一

分析:

  • 这里随机生成十个分数
  • 使用三目运算符求出最值
  • 得出平均分
public static void task1() {
        int[] score = new int[10];
        int sum = 0;
        for (int i = 0; i < score.length; i++) {
            score[i] = (int) (Math.random() * 100);
            sum += score[i];
            System.out.println(score[i]);
        }
        //最大值 最小值去掉
        int minIndex = 0, maxIndex = 0;
        for (int i = 1; i < score.length; i++) {
            maxIndex = (score[i] > score[maxIndex] ? i : maxIndex);
            minIndex = (score[i] < score[minIndex] ? i : minIndex);
        }
        System.out.println("最大值的索引" + maxIndex);
        System.out.println("最小值的索引" + minIndex);
        System.out.println("平均分:" + (sum - score[maxIndex] - score[minIndex]) / 8);

    }

方法二

分析:

  • 十位评委依次打分
  • 定义一个最大值和最小值,假设为第一个元素
  • 进行for循环求出最值即可
System.out.println("******歌唱比赛******");
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[10];
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            System.out.print("请第" + (i + 1) + "位评委进行打分:");
            int score = sc.nextInt();
            arr[i] = score;
            sum += arr[i];
        }
        int maxScore = arr[0];
        int minScore = arr[0];
        for (int i = 1; i < arr.length; i++) {
            if (maxScore < arr[i]) {
                maxScore = arr[i];
            }
            if (minScore > arr[i]) {
                minScore = arr[i];
            }
        }
        System.out.println("十位评委的总打分为:" + sum);
        System.out.println("评委最高分为:" + maxScore);
        System.out.println("评委最低分为:" + minScore);
        double avg = (sum - maxScore - minScore) / (arr.length - 2);
        System.out.println("该选手最终得分为:" + avg);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值