//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值
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;
A_zhi
2016.08.15.23.00