1.知识点
一维数组:定义、初始化、使用(相关的算法,常用系统类的使用)
多维数组:定义、初始化、使用
增强for循环,break、continue控制语句的学习
2.讲解
什么是数组?
例子
//要求把一个班的一门课的成绩,加起来求平均值;
import java.util.*;
class Average{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float avg=0;
float sum=0;
int count=1;
while(count<=3){
sum=Float();
count++;
}
avg=sum/(count-1);
System.out.println("平均值是:"+avg);
System.out.println("程序结束");
}
}
//新要求:我要在输出平均值的同时,也要将这门课的最高分,最低分,同时也要能看到这门的成绩
数组概念:一组能够存储相同数据类型值的变量的集合。
在java中我们本着一切是对象的原则,我们把数组在java中看成是对象,数组对象。数组是最基本的引用型数据类型。
一维数组的知识点
定义方法:
1、三步法
A、int[] arr;用来申明数组的引用,在栈中为arr开辟内存;
B、arr = new int[5];这是为数组arr在堆中为数组元素开辟6个存储单元;
C、把数组在堆中的起始位置给了arr这个引用变量
*一般我们的程序在运行时,我们为局部变量在栈中开辟内存,而为对象(对象属性)在堆中开辟内存。为对象方法在方法区开辟内存空间。为类的属性,在静态区开辟内存空间。
具体的内存图:
2、一步法:
A、int[] arr = new int[6];//这样做完后,arr中有6个元素,它们的默认值是0;
B、int[] arr = new int[]{1,2,3,4};//这样这个数组arr中的元素个数是四个,并且初始值为1,2,3,4;
C、int[] arr={1,2,3,4};//这种做法是静态的声明方法,是为了给c转过来的程序员,方便使用。
import java.util.*;
class Average1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float avg=0;
float sum=0;
int count=0;
int n=0;
System.out.println("班级人数:");
try{
Int();
}catch(InputMismatchException e0){
}
float[] cj = new float[n];//完成数组的声明
System.out.println("开始输入班级成绩:");
while(count<n){
try{//完成数组的元素的引用和初始化
cj[count]=sc.nextFloat();
sum+=cj[count];
count++;
}catch(InputMismatchException e1){
}
}
avg=sum/n;//avg=sum/count;
for(int i=0;i<cj.length;i++){//完成数组的输出,cj.length表示的就是数组的长度。
//length在这里是数组对象的一个静态属性,它始终存储的是数组的长度。
System.out.print(cj[i]+":");
}
System.out.print("\b");
System.out.println("平均值:"+avg);
System.out.println("程序结束");
}
}
通过上面的例子我们完成了一维数组的定义,初始化,并且也完成了数组的输出。
数组最大值、最小值
import java.util.*;
class ScoreHandler{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float avg=0;
float max=0;
float min=0;
float sum=0;
int count=0;
int n=0;
StringBuilder result=new StringBuilder();//这非同步的字符串缓冲类
System.out.println("班级人数:");
try{
Int();
}catch(InputMismatchException e0){
}
float[] cj = new float[n];//完成数组的声明
数组定义时初始化 System.out.println("开始输入班级成绩:");
while(count<n){
try{//完成数组的元素的引用和初始化
cj[count]=sc.nextFloat();
sum+=cj[count];
count++;
}catch(InputMismatchException e1){
}
}
avg=sum/n;//avg=sum/count;
//求最高分
max=cj[0];
for(int i=1;i<cj.length;i++){
if(max<cj[i]){
max=cj[i];
}
}
//求最低分
min=cj[0];
for(int i=1;i<cj.length;i++){
if(min>cj[i]){
min=cj[i];
}
}
//完成数组的输出
for(int i=0;i<cj.length;i++){
//System.out.print(cj[i]+":");
result.append(cj[i]+":");
}
result.deleteCharAt(result.length()-1);
//result.delete(result.length()-1,result.length());
//System.out.print(result.substring(0,result.length()-1));
//result.setCharAt(result.length()-1,' ');
System.out.print(result);
System.out.println();
System.out.println("平均值:"+avg+":最高分:"+max+":最低分:"+min);
System.out.println("程序结束");
}
}
以上是通过分步来求最大、最小;下面我们把求最大最小的过程进行封装成一个方法来简化求解过程,方便以后多次求解同类问题。
import java.util.*;
class ScoreHandler1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
float avg=0;
float max=0;
float min=0;
//float sum=0;
int count=0;
int n=0;
StringBuilder result=new StringBuilder();//这非同步的字符串缓冲类
System.out.println("班级人数:");
try{
Int();
}catch(InputMismatchException e0){
}
float[] cj = new float[n];//完成数组的声明
System.out.println("开始输入班级成绩:");
while(count<n){
try{//完成数组的元素的引用和初始化
cj[count]=sc.nextFloat();
//sum+=cj[count];
count++;
}catch(InputMismatchException e1){
}
}
//同过调用求平均值的放法来求一门课的平均值
avg=average(cj);
//求最高分
max=maxScore(cj);
//求最低分
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论