数组的应用

1.数组是什么?

可以存储多个数据的容器,他是一个线性结构

2.定义数组

##静态初始化

2.1静态初始化

直接将数组中的每个值都存进去

int[ ] arr = {2,5,7,54,85,45}

int[ ] arr 声明可以存储什么类型的数据,后面需要跟 [ ]

arr 数组的名称

{ } 数组中具体存储的值,用逗号分隔

2.2动态初始化

只给定数组的长度,数组中没有具体的保存的值

int[ ] brr = new int[10]

int [ ] 声明可以存储什么类型的数据,后面需要跟[ ]

brr           数组的名称

new int [10]    新建一个int 类型的数组,[ ]中的数字是数组的长度

3.数组的访问与赋值

##数组的访问

数组中的每一个元素都有一个下标(索引);他们从零开始;最大的索引是长度-1;数组的长度是length属性,访问数组是通过下标访问

public static void main(String[] args) {
        int[ ] arr = {2,5,7,54,85,45};
        System.out.println(arr[1]);
    }

中括号中填写需要访问元素对应的下标

##修改数组中对应下标元素的值或赋值

int[ ] brr = new int[10];
        brr[5]=77;                    //将77赋值给brr数组下标为5的元素;将原来的值覆盖
        System.out.println(brr[5]);   

4.遍历数组

for **循环方式**

    int[ ] arr = {2,5,7,54,85,45};
        for (int i = 0;i<arr.length;i++){
            System.out.println(arr[i]);
        }

循环遍历数组中每一个元素

while**循环方式**

     int[ ] arr = {2,5,7,54,85,45};
        int i=0;
        while (i<arr.length){
            System.out.println(arr[i]);
            i++;
        }

**forEach方式**

forEach是jdk1.5之后新增的而一种遍历数组的方式

 for (int i:arr) {
            System.out.println(i);
        }

5.数组的拷贝

System.arraycopy(源数组,开始位置,目标数组,开始位置,长度)

  int[] arr = {2,5,7,54,85,45};
        int[] brr = new int[10];
        System.arraycopy(arr,2,brr,2,3);
        for (int i:brr) {
            System.out.println(i);
            i++;
        }

6.动态数组

动态数组就是可变长度的数组,出自jdk1.5以后集合框架的内容     Arraylist

  ArrayList arr = new ArrayList();    //定义一个动态数组
        arr.add(11);                         //给数组中添加每个元素
        arr.add(11);
        arr.add(65);
        arr.add(345);
        arr.add(13453);
        arr.add(1234);
        arr.add(10);
        arr.add(10);
        arr.add(10);
        arr.add(10);
        arr.add(10);
        arr.add(1011);
        arr.remove((Object)10);              //删除数组中遍历到的第一个该元素
        System.out.println(arr.size());      //获得数组的长度
        System.out.println("_________________________________________________");
        System.out.println(arr.get(4));      //通过下标获取元素
        System.out.println("_________________________________________________");
        for (Object i:arr) {                  //遍历动态数组
            System.out.println(i);
        }

7.多维数组

一个变量:点

一个一堆数组:线

二维数组:面

**重点学习:二维数组

数组中套数组

**定义方式**

静态初始化

  public static void main(String[] args) {
        int[][] a = {
                {1,2234,3455,5,4,7,54,23},
                {1345,224,53,65,4,7,54,3},
                {18,22,433,5,454,47,54,6},
                {145,22,243,435,434,7,354,3}
                };
    }

动态初始化

int[][] b = new int[5][3];
        int[][] b1 = new int[5][];         //二维数组的长度可以不定

**访问**

先找到子数组的下标,再找到该元素在对应数组的下标

 int[][] a = {
                {1,2234,3455,5,4,7,54,23},
                {1345,224,53,65,4,7,54,3},
                {18,22,433,5,454,47,54,6},
                {145,22,243,435,434,7,354,3}
                };
        System.out.println(a[1][0]);

**赋值**

 int[][] b = new int[5][3];
        int[][] b1 = new int[5][];         //二维数组的长度可以不定
        
        b[1][0] = 67;

8.遍历数组的每个元素

使用for循环遍历

      int[][] a = {
                {1,2234,3455,5,4,7,54,23},
                {1345,224,53,65,4,7,54,3},
                {18,22,433,5,454,47,54,6},
                {145,22,243,435,434,7,354,3}
                };
        for (int i=0;i<a.length;i++){
            for (int j =0;j<a[i].length;j++){
                System.out.print(a[i][j]+"\t");
            }
            System.out.println();
        }

使用while循环遍历

  int i =0;
        while (i<a.length){
            int j =0;
            while (j<a[i].length){
                System.out.print(a[i][j]+"\t");
                j++;
            }
            System.out.println();
            i++;
        }

使用forEach循环遍历

 for (int[] i:a) {
            for (int j:i) {
                System.out.print(j+"\t");
            }
            System.out.println();
        }


练习题:

电影院选座

1.定义一个二维数组8行8例

2.每个元素随机生成0和1,1表示有人选了,0表示没人

3.提示用户输入行和列,判断座位有没有人,有人提示不可选,重新选,没人就提示可选,将该座位边成1

4.可查看所有选座情况

public class Demo2 {
    static Scanner sc = new Scanner(System.in);
    static int[][] arr = new int[8][8];

    public static void main(String[] args) {
        System.out.println("===========================欢迎来到猫眼影院====================================");
        buy();
    }

    public static void buy(){
        System.out.println("这是当前座位表");
        look();
        System.out.println("请输入你需要购买的座位编号(x,y)");
        int x = sc.nextInt();
        int y = sc.nextInt();
        if (arr[x-1][y-1]==0){
            System.out.println("座位可购");
            System.out.println("订购成功!");
            arr[x-1][y-1]=1;
        }else {
            System.out.println("座位已有人,不可购!");
            System.out.println("请重新选择");
            buy();
        }
    }


    public static void look() {
        for (int i = 0;i<arr.length;i++){
            for (int j =0;j<arr[i].length;j++){
                int a = (int)(Math.random()*10);
                if (a<5){
                    arr[i][j]=0;
                }else {
                    arr[i][j] = 1;
                }
                System.out.print(arr[i][j]+"\t");

            }
            System.out.println();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值