Java数组习题

本文涵盖了一系列关于Java数组的编程题目,包括寻找数组中最大值及其下标、判断数组是否升序、找出第二大的值、数组元素倒序排列、元素拷贝、数组对比、递归计算数组和以及计算歌手比赛评分的平均分。题目难度从易到难,旨在提升Java数组处理能力。

1.(易)设计一个方法,找出一个数组中最大的数字,连同所在的下标一起输出。

public static int Maxnum(int[] arry){
            int num=arry[0];
            int temp=0;
            for(int i=1;i<=arry.length-1;i++){
                if(num<arry[i]){
                    num=arry[i];
                    temp=i;
                }
            }
                System.out.println("最大数:"+num);
                System.out.println("下标:"+temp);
          return temp;
    }

2.(中)设计一个方法,判断一个数组是不是一个升序的数组。

 public static boolean ShengXu(int[] arr){
           for(int i=0;i<arr.length-1;i++) {
             if (arr[i] > arr[i + 1]) {
                System.out.println("不是升序数组");
                return false;
             }
            }
                System.out.println("是升序数组");
                return true; 
    }

3.(难)设计一个方法,找出一个整型数组中的第二大的值。

  • 不可以通过排序实现,不能修改数组中的数据顺序
  • 要考虑到最大的数字可能出现多次
public static int Second(int[] arr){
              int max=arr[0];
              int second=arr[0];
              int count=0;        //计算次数
          
          //第二大的数比第一个小比其他任何一个都大
              for(int i=0;i<arr.length;i++){
                  if(max<arr[i]){
                      second=max;
                      max=arr[i];
                  }else if(arr[i]>second&&arr[i]<max){
                      second=arr[i];
                  }
              }
      
              for(int i=0;i<arr.length;i++){
                  if(second==arr[i])
                      count++;
              }
          System.out.println(second);
          return count;
      }

4.(中)设计一个方法,将一个数组中的元素倒序排列(注意,不是降序)。

public static int[] Order(int[] arr){
           int l=arr.length;
           int[] arr1=new int[l];
           for(int i=0;i<l;i++){
               arr1[l-1-i]=arr[i];
           }
           for(int i:arr1)
               System.out.print(i+" ");
           return arr1;
    }

5.(易)将一个数组中的元素拷贝到另外一个数组中。

public class Work5 {
        public static void main(String[] args) {
            int[] array = new int[]{1,2,3,4,5,6,7,8,9};
            Copyarr(array);
        }
        public static int[] Copyarr(int[] arry){
            int[] arr1=new int[arry.length];
            for (int i = 0; i <= arry.length-1; i++) {
                arr1[i]=arry[i];
            }
    
            for(int i:arr1)
                System.out.print(i+" ");
            return arr1;
        }
    }

6.(易)设计一个方法,比较两个数组中的元素是否相同(数量、每一个元素都相同,才认为是相同的数组)。

public static boolean Compare(int[] a,int[] b){
           if(a.length!=b.length){
               System.out.println("不是相同数组");
               return false;
            }
            for(int i=0;i<a.length;i++) {
               if (a[i] != b[i]) {
                   System.out.println("不是相同数组");
                    return false;
               }
            }
                System.out.println("是相同数组");
                return true;
    }

7.(中)使用递归计算一个数组中的元素和。

  public class Work7 {
        public static void main(String[] args) {
            int[] arr=new int[]{1,2,3,4,5,6,7,8,9,10};
            System.out.println(Sum(arr,0));
        }
    public static int Sum(int[] arr,int i){
            if(i==arr.length-1)
                return arr[i];
            else
                return arr[i]+Sum(arr,i+1);
    }
    }

8.(易)小明参加歌手比赛,评委组给出10个成绩,去掉一个最高分,去掉一个最低分,求平均分

public class Work8 {
        public static void main(String[] args) {
            int[] sorce=new int[]{72,84,96,87,84,92,93,100,74,85};
            System.out.println(Average(sorce));
        }
        //找出最高分
        public static int MaxScore(int[] arr){
            int maxscore=arr[0];
            for(int i=1;i<arr.length;i++){
                if(maxscore<arr[i])
                    maxscore=arr[i];
            }
            return maxscore;
        }
    
        //找出最低分
        public static int MinScore(int[] arr){
            int minscore=arr[0];
            for(int i=1;i<arr.length;i++){
                if(minscore>arr[i])
                    minscore=arr[i];
            }
            return minscore;
        }
    
        //求数组和
        public static int Sum(int[] arr){
            int sum=0;
            for(int i=0;i<arr.length;i++){
                sum+=arr[i];
            }
            return sum;
        }
    
        //去最大值最小值平均分
        public static int Average(int[] arr){
            int maxscore;
            int minscore;
            int score;
    
            maxscore=MaxScore(arr);
            minscore=MinScore(arr);
            score=Sum(arr);
    
            int average=(score-maxscore-minscore)/(arr.length-2);
            return average;
        }
    }

1.实现方法:随机生成10个整数,存入数组

2.实现方法:求出数组中所有数的和

3.实现方法:求出数组中的最大值,第二大的值

4.实现方法:从大到小排序

 import java.util.Random;
    
    public class moring1 {
        public static void main(String[] args) {
    //        1.实现方法:随机生成10个整数,存入数组
            int[] array = new int[10];
            // 使用下标遍历数组
            for (int i = 0; i < array.length; i++) {
                int temp = (int)(Math.random()*100)+1;
                array[i]=temp;
                System.out.print(array[i]+" ");
            }
            System.out.println();
    
            System.out.println("该数组和为:"+Sum(array,0));
            System.out.println("该数组第二个最大的数为;"+Second(array));
            Sort(array);
        }
    //        2.实现方法:求出数组中所有数的和
        public static int Sum(int[] array,int i){
            if(i==array.length-1)
                return array[i];
            else
                return array[i]+Sum(array,i+1);
        }
    //        3.实现方法:求出数组中的最大值,第二大的值
        public static int Second(int[] array){
            int max=array[0];
            int second=array[0];
    
            for(int i=0;i<array.length;i++){
                if(max<array[i]){
                    second=max;
                    max=array[i];
                }else if(array[i]>second&&array[i]<max){
                    second=array[i];
                }
            }
            return second;
        }
    //        4.实现方法:从大到小排序
        public static int[] Sort(int[] arr){
            for(int i=0;i<arr.length;i++){
                for(int j=i+1;j<arr.length;j++){
                    if(arr[i]>arr[j]){
                        int temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            System.out.print("排序后的数组:");
            for(int i:arr)
                System.out.print(i+" ");
            return arr;
        }
    
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值