Java数组的算法
我们在数组学习会遇到求数值型数组中元素的最大值、最小值、平均数、总和等。这种题目也比较经典的。先定义一个int型的一堆数组,包含10个元素,分别赋一些随机整数,然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。要求:随机数都是两位数
我们会注意到题目中特别要求是随机数都是两位数,那我们考虑随机数就要从闭区间[10,99]中随机抽取,同时也可以通过遍历的方法,查看每次随机生成的数。
for (int i=0;i<arr.length;i++){ //遍历数组
System.out.print(arr[i] + "\t"); 输出数组中每个数值
}
System.out.println();
运行之后的结果(这是运行算法之后随机抽取的数),通过下图也不难发现每次生成的数值都是符合要求的。
31 33 90 26 15 61 82 51 72 72
平均数:53
接下来我们把目光放在求数值型数组中元素的最大值。我们由题目可以得知,生成的随机数可以通过判断方法进行运行,将最大值输出即可。
//求数组元素的最大值
int maxValue=arr[0];
for (int i=1;i< arr.length;i++){
if (maxValue<arr[i]){
maxValue=arr[i];
}
}
运行之后的结果
88 14 69 94 14 21 79 89 39 90
最大值为:94
在整个算法中最为重要的是一个公式是(int)(Math.random()*(99 - 10 +1)+10);
前面的(int)是一个强制转换符号,转换成int型的数值。这样可以保证我们随机生成的数值保持为整型。
最后我把源代码放在最后大家可以自己学习参考哦!
package com.project;
/*
* 算法的考查:求数值型数组中元素的最大值、最小值、平均数、总和等
*
* 定义一个int型的一堆数组,包含10个元素,分别赋一些随机整数,
* 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。
* 要求:随机数都是两位数
* [10,99]
*公式:(int)(Math.random()*(99 - 10 +1)+10)
* */
public class ArrayTest04 {
public static void main(String[] args) {
int[] arr=new int[10];
for (int i=0;i< arr.length;i++){
arr[i]=(int)(Math.random()*(99 - 10 +1)+10);
}
//遍历
for (int i=0;i<arr.length;i++){
System.out.print(arr[i] + "\t");
}
System.out.println();
//求数组元素的最大值
int maxValue=arr[0];
for (int i=1;i< arr.length;i++){
if (maxValue<arr[i]){
maxValue=arr[i];
}
}
System.out.println("最大值为:" + maxValue);
//求数组元素的最小值
int minValue=arr[0];
for (int i=1;i< arr.length;i++){
if (minValue>arr[i]){
minValue=arr[i];
}
}
System.out.println("最小值为:" +minValue);
//求数组元素的总和
int sum=0;
for (int i=0;i< arr.length;i++){
sum +=arr[i];
}
System.out.println("总和:" +sum);
//求数组元素的平均数
int avgValue=sum/ arr.length;
System.out.println("平均数:" +avgValue);
}
}