从键盘输入n个数,计算平均值,求其最大(小)值,并从大到小或从小到大排列(Array+ArrayList实现)
1.求平均数思想:
将输入数字放进数组,循环结构将每个元素累加。然后累加和除以数组长度得出平均值。注意:平均值应该是float型。
2.求其最大(小)值思想:
自定义成员变量max(min),遍历数组,循环结构中依次对比max(min)与各个元素值,求出数组中最大(小)值。
2.实现数字排序的思想:
将输入的数字放进数组,因为数组创建后不可以改变其大小,则需要将数组转换为Integer泛型集合。然后每次找到其最大(小)值,并且在当前集合删除此元素,然后将最大(小)值依次添加到另外一个Integer泛型集合中。这样得到的另外一个集合就是排序好的。
案例:从键盘输入5个数字,求出平均值,并从大到小,从小到大排序
1 package api.arraylist.paixu;
2
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.Scanner;
6
7 public class PaiXu {
8 public static void main(String[] args) {
9 float avg = 0;
10 int sum = 0;
11 ArrayList<Integer> list = new ArrayList<>();
12 ArrayList<Integer> list2 = new ArrayList<>();
13 int[] array = getArr();
14 for (int j : array) {
15 list.add(j);
16 }
17 //从大到小排列方法:
18 do {
19 int max = list.get(0);
20 for (Integer integer : list) {
21 if (integer >= max) {
22 max = integer;
23 }
24 }
25 list2.add(max);
26 list.remove((Integer) max); //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
27 } while (!list.isEmpty());
28 System.out.println("从大到小:");
29 System.out.println(list2);
30 //恢复list到初始状态
31 for (int j : array) {
32 list.add(j);
33 }
34 list2.clear();
35 //从小到大排列方法:
36 do {
37 int min = list.get(0);
38 for (Integer integer : list) {
39 if (integer <= min) {
40 min = integer;
41 }
42 }
43 list2.add(min);
44 list.remove((Integer) min); //获取ArrayList对应元素索引值:ArrayList.indexOf(元素名);
45 } while (!list.isEmpty());
46 System.out.println("从小到大:");
47 System.out.println(list2);
48 //计算平均值:
49 for (Integer integer : list2) {
50 sum += integer;
51 }
52 avg = (float) sum / (float) list2.size();
53 System.out.println("平均数:" + avg);
54
55 }
56
57 //从键盘获取数字 添加到数组
58 public static int[] getArr() {
59 Scanner sc = new Scanner(System.in);
60 int[] arr = new int[5];
61 for (int i = 0; i < arr.length; i++) {
62 System.out.print("请输入第" + (i + 1) + "个数:");
63 arr[i] = sc.nextInt();
64 }
65 System.out.println("原本数组:" + Arrays.toString(arr));
66 return arr;
67 }
68 }
另外两种简单数组排序方法点击这里