打赏

JAVA入门到精通-第16讲-数组

  数组的必要性:
 
  
  
 数组从0开始编号,arr[0];习惯从0开始;比如外国人建地下室;
 
  
 
   
 错误:数组越界;
 ArrayIndexOutofBoundsException:5
 
 
 arr.length,length是 数组的一个成员方法;
 
  
 
 
 NullPointerException  空指针异常;

  
  
  new完以后指向另外一块空间
  需要加一句话:
 dog[0]=new Dog( );
 
 
 Edit里面:-Content Assist
 Windows-perference-Keys快捷方式:
 
 Content Assist 内容 助手;

 转换成Buffer流; 
 br.readLine( )   //从控制台读取狗名; 
 thow Exception( )  抛出异常;
 或者用 try-catch块包住;
 
 只要看到readLine( )程序就会停在这里;
 如果你不输,程序就不会往下走了;直到你输入;

 通过Float.parseFloat()函数将String转换为float类型;

  对象数组也有length
 float avgWeight=allWeight/dogs.length;

  对象数组先定义,再使用的时候一定要new一下;
  
 定义的时候,里面放的是数组的引用,是空值;
 

 

二、关于数组的用法,有几种方式:2没事找事用法

第一步:先声明数组

    语法:数据类型 数组名[];  也可以  数据类型[] 数组名;

例:int a[];或者int[] a;

 

第二步:创建数组

    语法:数组名=new 数据类型[数组大小];

例:a=new int[10];

 

第三步:数组的引用(使用)

    语法:数组名[下标]

例:引用a数组的第8个元素 a[7]

 

要想知道数组的大小可以使用数组的length方法

    语法:数组名.length

 

三、关于数组的用法,有几种方式:3、古板用法 (当已知元素值的时候可以使用此法)

1初始化数组

    语法一维数组

什么是数组?

数组可以存放多个同一类型数据。

 

数组

一、关于数组的用法,有三种方式:1程序员用法

1、数组的定义

    数据类型 数组名[]=new 数据类型[数组大小];

int a[]=new int[5];//定义一个数组名为a的整型数组,并可以放入5个整型数。

说明:这是定义数组的一种方法。

  aa[0]a[1]a[2]a[3]a[4]|电脑中的数组

3楼|301房|302房|303房|304房|305房|现实中的楼房

楼是存在地球上的,那么数组是存在哪里的呢?-->电脑内存中

 

2、数组的引用(使用)

    数组名[下标]

比如:你要使用a数组的第三个数a[2]

 :数据类型 数组名[]={元素值,元素值...};

例: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只鸡,它们的体重分别是3kg5kg1kg3.4kg2kg50kg。请问这六只鸡的总体重是多少?平均体重是多少?请你编写一个程序。

//数组的必要性[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开始编号的。

 









posted on 2018-11-30 15:06  XuCodeX  阅读(177)  评论(0编辑  收藏  举报

导航