Java数组几道练习题

简介: Java数组几道练习题
1 找出数组中最大数连同下标一起输出
  • 定义一个数组,数组成员10个,找出数组中最大数连同下标一起输出
package ArrayList;
import java.util.Arrays;
public class ArryDemo1 {
    public static void main(String[] args) {
        //1.定义⼀个数组数组⻓度为10 ,随机赋值
        int[] arr = new int[10];
        inputArray(arr);
        System.out.println("arr数组中存储的值是:"+ Arrays.toString(arr));
        FindMaxNumber(arr);
        System.out.println("-------------------------------------------------------");
        scoreAvg(arr);
        System.out.println("-------------------------------------------------------");
        findMaxTow(arr);
    }

    public static void inputArray(int[] arr){
        for(int i = 0 ; i<arr.length;i++){
            arr[i] = (int)(Math.random()*100);
        }
    }

    public static void FindMaxNumber(int[] arr){
        int max = arr[0];
        int index = 0 ; //存储最⼤值下标

        for(int i = 0 ; i<arr.length;i++){
            if (max < arr[i]){
                //修改max中存储的最⼤值
                max = arr[i];
                index = i;
            }
        }
        System.out.println("最⼤值是:"+max+" 在数组中下标是:"+index);
    }
}

2 求数组中第二大的数的下标
  • 给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
package ArrayList;

import java.util.Arrays;

/**
 * @author yinying
 * @date 2023/1/14 0:02
 * @poject JavaDemo
 */
public class Demo2 {
    public static void findMaxTow(int[] arr){
        //1.定义两个变量 ⼀个是最⼤值⼀个是最⼩值(对于两个数⽽⾔ 最⼩值是不是就是第⼆⼤)
        int max = 0 ;
        int maxtow = 0;
        //2.使⽤假设⽅式 获取到数组中第⼀个元素和第⼆个元素,对这两个元素进⾏⽐较 确定之间的⼤⼩关系
        if(arr[0] > arr[1]){
            max = arr[0];
            maxtow = arr[1];
        }else if(arr[0] < arr[1]){
            max = arr[1];
            maxtow = arr[0];
        }
        //3.遍历寻找第⼆⼤值
        for(int i = 2;i<arr.length;i++){
            if(arr[i] > max){
            }else if(arr[i] > maxtow){
                maxtow = arr[i];
            }
        }
        System.out.println("第⼆⼤的值是:"+maxtow);
    }
}

2 求数组中第二大的数的下标
  • 给定一个整型数组,数组成员10个,求该数组中第二大的数的下标
package ArrayList;

import java.util.Arrays;

/**
 * @author yinying
 * @date 2023/1/14 0:02
 * @poject JavaDemo
 */
public class Demo2 {
    public static void findMaxTow(int[] arr){
        //1.定义两个变量 ⼀个是最⼤值⼀个是最⼩值(对于两个数⽽⾔ 最⼩值是不是就是第⼆⼤)
        int max = 0 ;
        int maxtow = 0;
        //2.使⽤假设⽅式 获取到数组中第⼀个元素和第⼆个元素,对这两个元素进⾏⽐较 确定之间的⼤⼩关系
        if(arr[0] > arr[1]){
            max = arr[0];
            maxtow = arr[1];
        }else if(arr[0] < arr[1]){
            max = arr[1];
            maxtow = arr[0];
        }
        //3.遍历寻找第⼆⼤值
        for(int i = 2;i<arr.length;i++){
            if(arr[i] > max){
            }else if(arr[i] > maxtow){
                maxtow = arr[i];
            }
        }
        System.out.println("第⼆⼤的值是:"+maxtow);
    }
}

3 去掉一个最高分一个最低分求平均分
  • 小柠檬去参加青年歌手大奖赛,有10个评委打分,去掉一个最高分一个最低分求平均分。
  • (提示:打分成绩控制台录入。)
public class Demo3 {
    public static void main(String[] args) {
        int[] singerscore=new int[10];
        Scanner input=new Scanner(System.in);
        System.out.print("请输入分数: ");
        for (int i = 0; i <singerscore.length ; i++) {
            singerscore[i]= input.nextInt();
        }
        int sum=0;
        int max=singerscore[0];
        int scoreone=0;
        for (int i = 0; i < singerscore.length; i++) {
            sum+=singerscore[i];
            if (singerscore[i]>max){
                max=singerscore[i];
            }
        }
        int min=singerscore[0];
        for (int j = 0; j < singerscore.length; j++) {
            if (singerscore[j]<min){
                min=singerscore[j];
            }
        }
        scoreone=(sum-max-min)/8;
        System.out.println("\n最终得分为:"+scoreone);
    }
}
4 成绩排序,求和、平均成绩、最小成绩、最大成绩
  • 定义数组,存放5个学生的成绩【成绩值自己设定】,将成绩从大到小排序,获得成绩之和,平均成绩,最小成绩,最大成 绩。
public class TDemo4 {
    public static void main(String[] args) {
        int[] arr=new int[5];
        int sum=0;
        Scanner input=new Scanner(System.in);
        System.out.println("请输入5位学员的成绩");
        for(int i=0;i<arr.length;i++){
            System.out.println("请输入第"+(i+1)+"位学员的成绩");
            //接受键盘输入的整数成绩
             arr[i]=input.nextInt();
            //循环5次  得出总分
             sum = sum+arr[i];
        }
        System.out.println("总分是:"+sum);
        //打印出5名学生的平均分
         System.out.println("平均分:"+sum/arr.length);
        int max=arr[0];
        System.out.println("最大成绩是:"+max);
        int min= arr[arr.length-1];
        System.out.println("最小成绩是:"+min);
    }
    public static void bubble(int[] arr) {
        //外层循环控制轮数
        for (int i = 0; i <arr.length-1 ; i++) {
            //内层循环控制比较的次数
            for (int j = 0; j < arr.length-1-i; j++) {
                //j和j+1交换
                if(arr[j]<arr[j+1]) {
                    int t = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = t;
                }
            }
        }
    }
}  
5 统计数组中的最大值、最小值、以及奇数和偶数的个数
  • 定义一个长度为10的int数组,统计数组中的最大值、最小值、以及奇数和偶数的个数。
public class Demo5 {
    public static void main(String[] args) {
        int[] num=new int[]{99,97,96,95,94,92,91,90,88,100};
        Arrays.sort(num);
        int evensum=0,oddsum=0;
        for (int i = 0; i < num.length; i++) {
            if (num[i]%2==0){
                evensum++;
            }else if(num[i]%2==1){
                oddsum++;
            }
        }
        System.out.println("最大值为:"+num[num.length-1]+"最小值为:"+num[0]);
        System.out.println("奇数的个数为:"+oddsum+"偶数的个数为:"+evensum);
  


6 数组元素反转
  • 编写方法,将指定数组中的数组元素进行反转。
  • 例如:{10,23,2,45,6}—>{6,45,2,23,10}
public class Demo6 {
    public static void main(String[] args) {
        int[] arr={10,23,2,45,6};
        System.out.print("原数组是:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        reverse(arr,arr.length);
    }
    public static void reverse(int a[],int n){
        int[] b=new  int[n];
        int j=n;
        for (int i = 0; i < n; i++) {
            b[j-1]=a[i];
            j=j-1;
        }
        System.out.print("\n反转数组是:");
        for (int k = 0; k < n; k++) {
            System.out.print(b[k]+" ");
        }
    }
}
7 二维数组遍历
  • 班上有3个学生,每个学生都参加了三门功课的考试,其中第二个学生是特长生,上级要求给他每门功课都+5.【要求:使用二 维数组做,并且分别使用for循环和增强for循环遍历二维数组】
public class Demo7 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        double[][] scores=new double[3][3];
        double score;
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j <3 ; j++) {
                while (true){
                    System.out.println("请录入第"+(i+1)+"名学生,第"+(j+1)+"门课程成绩:");
                    score=input.nextDouble();
                    scores[i][j]=score;
                    if (score>=0&&score<=100){
                        if(i==1){
                            score+=5.0;
                            scores[i][j]=score;
                            if (score>100){
                                scores[i][j]=100;
                                scores[i][j]=score;
                                System.out.println("特长生加5分,满分100,你最多100分");
                            }
                        }
                        break;
                    }else{
                        System.out.println("超出范围,请重新录入");
                        continue;
                    }
                }
            }
        }
        for (double[]ds:scores){
            for (double d:ds){
                System.out.println(d);
            }
        }
    }
}
8 在已经排序好的数组中按原规律插入新数据
  • 有一个已经排好序的数组,现输入一个数,要求按原来的规律将它插入数组中。
public class Demo8 {
    public static void main(String[] args) {
        int[] array={1,2,3,5,6,7,8,9};
        System.out.print("定义的数组为:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]+" ");
        }
        System.out.println();
        Scanner input=new Scanner(System.in);
        System.out.print("请输入一个数:");
        int addNumber=input.nextInt();
        array= Arrays.copyOf(array,array.length+1);
        array[array.length-1]=addNumber;
        int i=0;
        if (array[i]<=array[array.length-2]){
            Arrays.sort(array);
            System.out.print("插入一个数后的数组为:");
            for (i = 0; i<array.length; i++) {
                System.out.print(array[i]+" ");
            }
        }else {
            Arrays.sort(array);
            System.out.print("插入一个数后的数组为:");
            for (i = array.length-1; i >=0; i--) {
                System.out.print(array[i]+" ");
            }
        }
    }

}
9 求一个3*3矩阵对角线元素之和

10 20 30

8 6 7

20 25 50

ublic class Demo9 {
    public static void main(String[] args) {
        int[][] a=new int[][]{{10,20,30},{8,6,7},{20,25,50}};
        matrSum(a);
    }

    public static void matrSum(int[][] a) {
        int sum1=0;
        int sum2=0;
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                if (i==j){
                    sum1+=a[i][j];
                }
                if(j==a.length-i-1){
                    sum2+=a[i][j];
                }
            }
            System.out.println("矩阵对角线之和分别是:"+sum1+"和"+sum2);
        }
    }
}

目录
相关文章
|
2月前
|
Java
|
5天前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
|
13天前
|
存储 Java
什么是带有示例的 Java 中的交错数组?
什么是带有示例的 Java 中的交错数组?
37 9
|
12天前
|
Java
Java数组动态扩容和动态缩减
Java数组动态扩容和动态缩减
14 3
|
17天前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
19 6
|
12天前
|
存储 Java 程序员
【一步一步了解Java系列】:何为数组,何为引用类型
【一步一步了解Java系列】:何为数组,何为引用类型
19 1
|
14天前
|
存储 XML Java
如何在 Java 中将常见文档转换为 PNG 图像数组
如何在 Java 中将常见文档转换为 PNG 图像数组
12 1
|
24天前
|
存储 安全 Java
Java数组(Arrays)详解
Java 中的数组是一种用于存储固定数量同类型数据的高效数据结构,支持连续内存存储和随机访问。数组可以声明并初始化,通过索引访问和修改元素,获取长度,使用循环遍历,支持多维形式,并可通过 `Arrays` 类的方法进行复制和排序。数组具有固定大小和类型安全的特点,但需注意越界等问题。灵活运用数组能显著提升编程效率。
|
6天前
|
存储 算法 Java
带你学习java的数组军队列
带你学习java的数组军队列
23 0
|
1月前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。