1.1 一维数组
什么是数组?
数组可以存放多个同一类型数据。
数组
一、关于数组的用法,有三种方式:1、程序员用法
1 、数组的定义
数据类型 数组名[]=new 数据类型[数组大小];
int a[]=new int[5];//定义一个数组名为a的整型数组,并可以放入5个整型数。
说明:这是定义数组的一种方法。
a|a[0]|a[1]|a[2]|a[3]|a[4]|电脑中的数组
3楼|301房|302房|303房|304房|305房|现实中的楼房
楼是存在地球上的,那么数组是存在哪里的呢?-->电脑内存中
2 、数组的引用(使用)
数组名[下标]
比如:你要使用a数组的第三个数a[2]
二、关于数组的用法,有几种方式:2、没事找事用法
第一步:先声明数组
语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;
例:int a[];
或者int[] a;
第二步:创建数组
语法:数组名=new 数据类型[数组大小];
例:a=new int[10];
第三步:数组的引用(使用)
语法:数组名[下标]
例:引用a数组的第8个元素 a[7]
要想知道数组的大小可以使用数组的length方法
语法:数组名.length
三、关于数组的用法,有几种方式:3、古板用法 (当已知元素值的时候可以使用此法)
1、初始化数组
语法:数据类型 数组名[]={元素值,元素值...};
例:int a[]={2,5,6,7,8,89,90,34,56}
上面的用法相当于:
int a[]=new int[9]
int a[0]=2;int a[1]=5;int a[2]=6;...a[8]=56;
2、数组的引用(使用)
语法:数组名[下标]
例:a数组的第8个元素a[7]
一个养鸡场有6只鸡,它们的体重分别是3kg、5kg、1kg,3.4kg、2kg、50kg。请问这六只鸡的总体重是多少?平均体重是多少?请你编写一个程序。
//数组的必要性[Demo129.java]
public class Demo129 {
public static void main(String[] args) {
//定义一个可以存放六个float类型的数组
float arr[]=new float[6];
//使用for循环赋值
//给数组的各个元素赋值
arr[0]=3;
arr[1]=5;
arr[2]=1;
arr[3]=3.4f;
arr[4]=2;
arr[5]=50;
//计算总体重[遍历数组]
float all=0;
for(int i=0;i<6;i++){
all+=arr[i];
}
System.out.println("总体重是:"+all);
}
}
数组--一维数组
在运动会上,五个小孩比赛滑轮,他们划完100米用时,分别用了10s/12s/5.7s/9s/14s,请编写一个程序,计算他们的平均时间?
public class Demo130{
public static void main(String []args){
//使用古板法定义数组并给数组赋值
float time[]={10,12,5.7f,9,14};
float zs=0;
for(int i=0;i<time.length;i++){
zs+=time[i];
}
System.out.println("百米平均用时:"+(zs/time.length)+"s");
//如何知道数组的大小?使用数组的length方法便可知道数组大小
System.out.println(time.length);
}
}
数组
请思考,既然int,float,double..等都可以有数组,那么可不可以有对象数组呢?
对前面的养鸡场的题,进行升级,题要求如下:
一个养狗场有4只狗,分别是:
名字 体重
花花 4.5kg
白白 5.6kg
黑黑 78kg
红红 9.0kg
请编写一个程序,可以计算他们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找它的体重。
//对象数组的使用[Demo131.java]
//import java.io.*;
import java.util.*;
public class Demo131 {
public static void main(String[] args) throws Exception {//throws Exception将输入错误踢除程序块
//定义一个对象数组可以存放四只狗的对象数组
Dog dogs[]=new Dog[4];
//给各个狗赋初值
/* dogs[0]=new Dog();
dogs[0].setName("花花");
dogs[0].setWeight(4.5f);
dogs[]*/
//从控制台输入各个狗的信息
// InputStreamReader isr=new InputStreamReader(System.in);
// BufferedReader br=new BufferedReader(isr);
Scanner sr=new Scanner(System.in);
for(int i=0;i<4;i++){
dogs[i]=new Dog();//必需要使用new方法将数组指向Dog类
System.out.println("请输入第"+(i+1)+"狗名");
//从控制台读取狗名
String name=sr.nextLine();
//将名字赋给对象
dogs[i].setName(name);//将狗名使用set方法传入Dog类中
System.out.println("请输入"+(i+1)+"狗的体重");
String s_weight=sr.nextLine();
float weight=Float.parseFloat(s_weight);
//将名字赋给对象
dogs[i].setWeight(weight);//将狗体重使用set方法传入Dog类中
}
//计算总体重
float allWeight=0;
for(int i=0;i<4;i++){
allWeight+=dogs[i].getWeight();//将dogs数组中的狗体重从Dog类中取出并累加赋值给总体重
}
//计算平均体重
float avgWeight=allWeight/dogs.length;
System.out.println("总体重="+allWeight+"\t平均体重="+avgWeight);
//找出体重最大的狗
//假设第一狗体重最大
float maxWeight=dogs[0].getWeight();
int maxIndex=0;//定义用于比较体重的下标
//依次和第一只狗比较体重
for(int i=1;i<dogs.length;i++){
if(maxWeight<dogs[i].getWeight()){
//如何比较的狗体重大于第一只狗的体重则进行修改
maxWeight=dogs[i].getWeight();
maxIndex=i;
}
}
//找出体重最小的狗
float minWeight=dogs[0].getWeight();
int minIndex=0;
for(int j=1;j<dogs.length;j++){
if(minWeight>dogs[j].getWeight()){
//如何比较的狗体重小于第一只狗的体重则进行修改
minWeight=dogs[j].getWeight();
minIndex=j;
}
}
System.out.println("体重大的狗是第"+(maxIndex+1)+"狗,名字叫:"+dogs[maxIndex].getName()+"\t体重是"+maxWeight);
System.out.println("体重小的狗是第"+(minIndex+1)+"狗,名字叫:"+dogs[minIndex].getName()+"\t体重是"+minWeight);
//输入狗的名字查狗的体重
System.out.println("请输入你要找的狗的名字:");
String cname=sr.nextLine();
int cIndex=0;
for(int k=0;k<dogs.length;k++){
if(cname.equals(dogs[k].getName())){//对比狗名。变量名.equals()方法用于字符串比较内容是否一致。
System.out.println("你要找狗名"+ dogs[cIndex].getName()+"\t体重是"+dogs[cIndex].getWeight());
}
}
}
}
//定义一个狗类
class Dog{
private String name;
private float weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}
一维数组 -- 小结
1、数组可存放同一类型数据;
2、简单数据类型(int,float)数组,可直接赋值;
3、对象数组在定义后,赋值时需要再次为每个对象分配空间[即:new 对象];
4、数组大小必须事先指定;
5、数组名可以理解为指向数组首地址的引用;
6、数组的下标是从0开始编号的。
===============================================================================
1.1 多维数组
多维数组--二维数组
多维数组我们只介绍二维数组
1、定义
语法:类型 数组名[][]=new 类型[大小][大小];
比如:int a[][]=new int[2][3];
2、分析
二维数组在内存中存在的形式
3、案例,请用二维数组输出如下图形
0 0 0 0 0 0
0 0 1 0 0 0
0 2 0 3 0 0
0 0 0 0 0 0
//二维数组演示[Demo138.java]
public class Demo138 {
public static void main(String[] args) {
int a[][]=new int[4][6];//定义二维数组a4行6列
a[1][2]=1;
a[2][1]=2;
a[2][3]=3;
//把图形输出
for(int i=0;i<4;i++){//控制行
for(int j=0;j<6;j++){//控制列
System.out.print(a[i][j]+"\t");//输出数组
}
System.out.println();//换行
}
}
}