//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值
package com.azhi;//纠正昨天的包名,今天老师说要以反域名命名,昨天还不知道,今天就这么弄了一个
import java.util.Scanner;
public class Text_Array {
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);//从键盘输入
		System.out.print("请输入学生个数:");
		int num=sc.nextInt();//等待输入
		double[] nums=new double[num];
		for(int i=0;i<nums.length;i++){
			System.out.print("请输入第"+(i+1)+"个学生的成绩:");
			nums[i]=sc.nextDouble();
		}
		double result=0;
		double avg=0;
		for(double n:nums){
			result+=n;
			 avg=result/num;
		}
		System.out.println("学生的平均成绩为:"+avg);
/*============================================================*/		
		int i=0;
		double max=0;
		for(i=0;i<nums.length;i++){	//擂台法比较大小
			if(nums[i]>max){
				max=nums[i];
			}
		}
		System.out.print("他们之中的最高成绩是:"+max);
/*============================================================*/	
		int j=0;
		double min=nums[0];
		for(j=1;j<=nums.length;j++){
			if(min>nums[j]){
				min=nums[j];
			}
		}
		System.out.print("\n他们之中的最低成绩是:"+min);
sc.close();//关闭输入流,节省内存,充分利用资源,据说初学者了解意义不大,一个学Java已久的朋友给说的,说有必要养成好习惯
	}
}

  这是今天学习数组之后做的一个练习。这个题后面求最大最小只其实可以简写,但是为了区分故分开。

  今天首要的问题就是数组中求最大最小值,开始不太懂,后来才明白,即对于在数组中求最大最小值,最简单的办法就是利用“打擂台”的方法,即声明一个变量,如max,再在循环中依次与各个元素做比较,遇到大于max的元素时,将该元素赋值给max,然后再循环、比较、赋值。其次最大的问题就是当数组,循环,选择合在一起来做的题目,个人基本是蒙的,可能是知识点掌握不够,可能是理解还有问题,那几个题目难住我一下午加一晚上了,头都昏了,明天听听老师讲吧。

今天知识点:
  数组有这几个特点:1,每个元素都是连续储存的。2,每个元素储存的空间一样大。3,数组可以做到检索快速。4,数组储存空间的大小一旦分配,不可改变。

  其他:1,利用length的属性做实现的for循环可以这样写了:for(int i=0;i<name.length;i++){表达式},name.length即是数组name的长度,2,对于数组边声明边赋值的用法:(1)int[] name={1,2,3...};(2)int[] name=new int[]{1,2,3...};数组也可以声明不赋值,而利用Scanner从键盘输入数据(关键语法:import java.util.Scanner;Scanner sc=new Scanner(System.in);int num=sc.nextInt();),单纯的数组声明为:int[] name=new int[num];(仅以int为列)

  不同数据类型在数组中对应的默认值:char--□;int--0;long--0;float--0;double--0;String--null;