zoukankan      html  css  js  c++  java
  • 大龄屌丝自学笔记Java零基础到菜鸟013

    数组,二维数组,杨辉三角形

    1、数组

    数组是存储同一数据类型的多个元素的集合。

    数组既可以存储基本数据类型,也可以存储引用数据类型。

    数组的定义格式:数据类型[] 数组名  //数组必须初始化之后,才能使用

    数组动态初始化:数据类型[] 数组名 = new 数据类型[数组长度];  如:int[] a = new a[3];  //初始化时,只指定数组的长度   

    数组静态初始化1:数据类型[] 数组名 = new 数据类型[]{元素1 , ... , 元素n};  如:int[] a = new a[]{1,2,3};  //初始化时,即指定每个数组元素的初始值

    数组静态初始化2:数据类型[] 数组名 = {元素1 , ... , 元素n};  如:int[] a = {1,2,3};  //初始化时,即指定每个数组元素的初始值

    数组元素的值:数组名[索引] ,如:int[] a = {1,2,3};  int n = a[1];  //n=2,数组的索引从0开始,数组是引用类型

     1 class Fin{
     2     public static void main(String[] args){
     3         int[] a=int[3];
     4         a[0]=1;
     5         a[1]=2;
     6         a[2]=3;
     7 
     8         int[] b=a;
     9         b[1]=4;
    10 
    11         System.out.println(b)     //输出数组b的地址(与数组a的地址相同)
    12         System.out.println(a[1])  //a[1]=4
    13     }
    14 }

    常见问题:索引越界异常、空指针异常。

    索引越界异常:数组的索引大于数组的元素个数,访问不存在的索引,如:int[] a = int[3];  int n = a[5];   //报错

    空指针异常:数组已不再指向【堆】内存,仍然访问数组,如:int[] a = int[3];  n = null;  int n = a[0];  //报错

    获取数组的长度:数组名.length;  //int

    1 // 数组的逆序
    2 public static void liverpool(int[] arr){
    3     int k=0;
    4     for(int i=0,j=arr.length-1;i<j;i++,j--){
    5         k=arr[i];
    6         arr[i]=arr[j];
    7         arr[j]=k;
    8     }
    9 }

    2、二维数组

    二维数组就是元素为一维数组的数组。

    二维数组的定义格式:数据类型[][] 数组名

    二维数组动态初始化1:数据类型[] 数组名 = new 数据类型[m][n];  如:int[][] a = new a[2][3];  //m(2)个长度为n(3)的一维数组   

    二维数组动态初始化2:数据类型[] 数组名 = new 数据类型[m][];  如:int[][] a = new a[2][];  //m(2)个未初始化的一维数组   

    二维数组静态初始化1:数据类型[] 数组名 = new 数据类型{{元素...}, ... ,{元素...}};  如:int[][] a = new int[][]{{1,2,3} , {4,5} , {6}};

    二维数组静态初始化2:数据类型[] 数组名 = {{元素...}, ... ,{元素...}};  如:int[][] a = {{1,2,3} , {4,5} , {6}};

    二维数组元素的值 :数组名[索引][索引] ,如:int[][] a = {{1,2,3} , {4,5,6}};  int n = a[1][2];  //n=6

    3、杨辉三角形

    每行的第一列、最后一列,值为1;第三行开始,每列(最后一列除外)的值等于上一行的前一列和上一行的本列之和,即a[m][n]=a[m-1][n-1]+a[m-1][n]。

     1 class Test{    
     2     public static void main(String[] args){
     3         yang(5);
     4     }
     5 
     6     public static void  yang(int n){    
     7         if(n>0){
     8             //二维数组
     9             int[][] y=new int[n][];
    10             if(n==1){
    11                 y[0]=new int[]{1};
    12             }else if(n==2){
    13                 y[0]=new int[]{1};
    14                 y[1]=new int[]{1,1};
    15             }else{
    16                 y=new int[n][];
    17                 y[0]=new int[]{1};
    18                 y[1]=new int[]{1,1};
    19                 for(int i=2;i<n;i++){
    20                     y[i]=new int[i+1];
    21                     for(int j=0;j<=i;j++){
    22                         if(j==0||j==i){
    23                             y[i][j]=1;
    24                         }else{
    25                             y[i][j]=y[i-1][j-1]+y[i-1][j];
    26                         }
    27                     }
    28                 }
    29             }
    30             //输出
    31             for(int i=0;i<y.length;i++){
    32                 for(int j=0;j<y[i].length;j++){
    33                     System.out.print(y[i][j]+ "  ");
    34                 }
    35                 System.out.println("");
    36             }    
    37         }else{
    38             System.out.print("bug");  //n<1,bug
    39         }
    40     }
    41 }
  • 相关阅读:
    C语言II博客作业01
    C语言学期总结
    C语言I博客作业01
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    First time homework
    C语言II博客作业04
    C语言II博客作业03
  • 原文地址:https://www.cnblogs.com/liverpool/p/4769013.html
Copyright © 2011-2022 走看看