• 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+" 平均体重="+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()+" 体重是"+maxWeight);

            System.out.println("体重小的狗是第"+(minIndex+1)+"狗,名字叫:"+dogs[minIndex].getName()+" 体重是"+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()+" 体重是"+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开始编号的。

     









  • 相关阅读:
    动态svg图片简单制作
    5418.二叉树中的伪回文路径
    5417.定长子串中元音的最大数目
    76.最小覆盖子串
    1371.每个元音包含偶数次的最长子字符串
    680.验证回文字符串II
    152.乘积最大子数组
    5397.最简分数
    5398.统计二叉树中好节点的数目
    5413.重新排列句子中的单词
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10044259.html
Copyright © 2020-2023  润新知