zoukankan      html  css  js  c++  java
  • java(7)数组

    一、什么是数组及其作用?

    定义:具有相同数据类型的一个集合

    作用:存储连续的具有相同类型的数据

    二、java中如何声明和定义数组

    2.1 声明和定义的语法:

            数据类型[ ] 数组名;( int[ ] nums ; )

      或 数据类型 数组名[];  ( int nums[ ] ;)

    2.2 为数组分配空间

      数组名=new 数据类型[数组的长度]; ( nums=new int[5] ;)

    2.3 声明数组,同时分配空间

      数据类型[]数组名= new 数据类型[数组的长度];

      数据类型 数组名[]=new 数据类型[数组的长度];

              ( int[ ] nums=new int[5] ;)   ( int nums[ ]=new int[5] ;)

    三、 如何读取数组中的元素— 通过下标(索引)来获取

    下标(索引)是从0开始,最大下标为  数组长度-1

    下标越界:ArrayIndexOutOfBoundsException

    int类型的数组,每个元素的默认值为0

    String类型的数组,每个元素的默认值为null

    3.1、 获取单个元素的值

      数据类型 变量名=数组名[下标];

    3.2、循环读取数组中的每个元素

      数组的长度:数组名.length 属性自动计算

      for(int i=0;i<数组名.length ;i++){

                    数组名[i];

      }

    四、如何给数组中的元素赋值

    方式1(赋予数组固定值):

           声明数组,分配空间,并赋值

    (数组的长度由值的个数决定)

    数据类型  数组名[]=new 数据类型[]{值1,值2…值n};

    数据类型 []数组名={值1,值2…值n};

    说明:[]中括号可以放在数组名前面或后面

    方式2:动态的给数组赋值(从键盘中输入)

              Scanner  input = new Scanner(System.in);

              for(int i=0;i<数组名.length ; i++){

                      String类型的数组名[i]= input.next ();     

                      int类型的数组名[i]= input.nextInt ();      

                      double类型的数组[i]=input.nextDouble();

    }

    五、求数组中最值的位置

    1、在循环的外面,定义变量k(赋值为0),用于保存最值的下标

    2、在循环中,比较找出最值的同时,给变量k赋值

     1 public class Practice1 {
     2     public static void main(String[] args){
     3             int[] grade= new int[5];
     4             int max=0;
     5             Scanner input = new Scanner(System.in);
     6             System.out.println("请输入5位学员的成绩:");
     7             for(int i=0;i<grade.length;i++){
     8                 grade[i]=input.nextInt();
     9             }
    10             max=grade[0];
    11             for(int i=1;i<grade.length;i++){
    12                 if(grade[i]>max){
    13                     max=grade[i];
    14                 }
    15             }
    16             System.out.println("考试成绩最高分为:"+max);
    17         }
    18 }
    示例1

    运行结果:如图:

    六、求最大值或最小值

    实现思路:将数组中的第1个元素的值,假想成最大(小)值【赋值】;然后数组中的每个元素和假想的这个最大(小)数进行比较,如果数组中的某个元素的值,比最大(小)数要大(小),将该元素的值,保存到假想的最大(小)值对应的变量中【给假想最值变量赋值】

    七、数组排序问题

    使用Arrays. sort(数组名);

    实现对数组中的元素按升序或降序输出

    1 public class practice2 {
    2     public static void main(String[] args){
    3        int[] a={5,4,2,9,1};   
    4        Arrays.sort(a);  //进行排序   
    5        for(int i: a){   
    6              System.out.print(i+"	");   
    7         }  
    8     } 
    9 }
    示例2

    运行结果:如图:

    八、斐波那契数列

    1,1,2,3,5,8,13,21,34……求第20个数字的值?(使用循环)

    规律:第i个 + 第(i+1)个 = 第(i+2)个

         步骤1:定义数组,数组长度为20

               int []nums=new int[20];

      步骤2:根据规律,获取第0个和第1个数的初值

               nums[0]=1;

               nums[1]=1;

      步骤3:通过循环,给数组中的所有元素赋值

                      for ( int i=0;i<nums.length-2;i++){

                             nums [i+2]=nums[i]+nums[i+1];

                      }

                      for(int i=2;i<nums.length;i++){

                             nums[i]=nums[i-2]+nums[i-1];

                      }

      步骤4:输出nums[19]的值

    九、已知1个按升序或降序排列的数组,向该数组中,插入一个新的值,插入成功后,数组仍然按照升序或降序排列?

    1、 设置插入位置变量index的初始值为:数组长度-1;

    2、 使用第1个循环,让插入的数值和数组中的每个元素进行比较,如果插入的数值比数组中某个元素的值要大或小,把该元素的下标的值, 赋予插入位置变量index,同时终止循环

    3、 使用第2个循环,移动位置,从【数组长度-2】到【插入位置变量index】

    4、 将插入的值,保存到数组下标为index的位置

    5、 使用第3个循环,输出数组所有元素的值,同时输出新值插入的位置

     1 public class Practice4 {
     2     public static void main(String[] args){
     3         int[] ming =new int[6];
     4         ming[0]=98;
     5         ming[1]=85;
     6         ming[2]=82;
     7         ming[3]=63;
     8         ming[4]=60;
     9         int index=ming.length;
    10         System.out.println("请输入新增成绩:");
    11         Scanner input = new Scanner(System.in);
    12         int num=input.nextInt();
    13         for(int i =0;i<ming.length;i++){
    14             if(num>ming[i]){
    15                 index = i;
    16                 break;
    17             }
    18         }
    19         for(int j=ming.length-1;j>index;j--){
    20             ming[j]=ming[j-1];
    21         }
    22         ming[index] = num;
    23         System.out.println("插入成绩的下标是:"+index);
    24         System.out.println("插入后的成绩信息是:");
    25         for(int l=0;l<ming.length;l++){
    26             System.out.print(ming[l]+"	");
    27         }
    28     }
    29 }
    示例3

    运行结果:如图:

  • 相关阅读:
    idou老师教你学Istio 08: 调用链埋点是否真的“零修改”?
    idou老师教你学Istio 07: 如何用istio实现请求超时管理
    idou老师教你学Istio06: 如何用istio实现流量迁移
    Strusts2笔记8--文件的上传和下载
    Strusts2笔记7--国际化
    Strusts2笔记6--拦截器
    Strusts2笔记5--数据验证
    Strusts2笔记4--类型转换器
    Struts2笔记3--获取ServletAPI和OGNL与值栈
    Struts2笔记2--动态方法调用和Action接收请求方式
  • 原文地址:https://www.cnblogs.com/-chaoming/p/6970571.html
Copyright © 2011-2022 走看看