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); } } }