05-数组

如何定义一维数组

1. 数组的声明

String[] names;
int scores[];

2. 初始化

第一种:静态初始化:初始化数组与给数组元素赋值同时进行

names=new String[]{"Andy","小明","李强"};

第二种:动态初始化:初始化数组与给数组元素赋值分开进行

scores=new int[4];

3. 如何调用相应的数组元素:通过数组元素的下角标的方式来调用

下角标从0开始,到n-1结束。其中n表示的数组的长度

score[0]=87;
score[1]=89;
score[3]=98;

4. 数组的长度:通过数组的length属性  (数组一旦初始化,其长度是不可变的)

System.out.println(names.length);//3
System.out.println(scores.length);//4

5. 如何遍历数组远元素

for(int i=0;i<names.length;i++){
    System.out.println(names[i]);
}

对于基于基本数据类型的变量创建的数组:byte、short、int、long、float、double、char、boolean

1. 对于byte、short、int、long而言:创建数字以后,默认值为0

2. 对于float、double而言:默认值为0.0

3. 对于char而言:默认值为空

4. 对于boolean而言,默认值为false

5. 对于引用类型的变量构成的数组而言:默认初始化值为null

关于数组在内存中的结构

内存的基本结构:栈(stack) 存放局部变量、对象的引用

                             堆(heap) new出来的东西

                             方法区

                             静态区

例题:

代码:

package com.company;

import java.util.Scanner;

public class StudentScore {
    public static void main(String[] args) {
        //1.创建Scanner的对象,并从键盘获取学生的个数studentNum
        Scanner scan = new Scanner(System.in);
        System.out.print("请输入学生人数:");
        int studentNum = scan.nextInt();
        System.out.println("请输入" + studentNum + "个成绩");
        //2. 根据输入的学生的个数studentNum,创建一个长度为studentNum的int型的数组
        int[] scores = new int[studentNum];
        //3. 依次从键盘获取studentNum个学生的成绩,并赋予相应的数组元素,并获取studentNum个学生中的最高分
        int maxScore = 0;
        for (int i = 0; i < studentNum; i++) {
            int score = scan.nextInt();
            scores[i] = score;
            if (score > maxScore) {
                maxScore = score;
            }
        }
        System.out.println("最高分是:" + maxScore);
        //4. 遍历学生成绩的数组,并根据学生成绩与最高分的差值,赋予相应的等级,并输出
        char level;
        for (int z = 0; z < studentNum; z++) {
            if (scores[z] >= maxScore - 10) {
                level = 'A';
            } else if (scores[z] >= maxScore - 20) {
                level = 'B';
            } else if (scores[z] >= maxScore - 30) {
                level = 'C';
            } else {
                level = 'D';
            }
            System.out.println("student " + z + " score is " + scores[z] + " grade is " + level);
        }
    }
}

多维数组

二维数组[][]:数组中的数组

格式1(静态初始化

int[][] arr=new int[][]{{1,2,3},{4,5,6},{7}}

格式2(动态初始化):

int[][] arr=new int[3][2];

定义了名称为arr的二维数组

二维数组中有3个一维数组

每一个一维数组中有2个元素

一维数组的名称分别为arr[0],arr[1],arr[2]

给第一个一维数组1脚标位赋值为78写法是:arr[0][1]=78;

格式3(动态初始化):

int[][] arr=new int[3][];

二维数组中有3个一维数组

每个一维数组都是默认初始化值null(注意:区别于格式1)

可以对这个三个一维数组分别进行初始化

arr[0]=new int[3];     arr[1]=new int[1];     arr[2]=new int[2];

注:

int[][] arr=new int[][3];//非法

二维数组内存结构:

数组的常见异常:

1、数组下标越界的异常:java.lang.ArrayIndexOutOfBoundsException

2、空指针的异常:java.lang.NullPointerException

杨辉三角

【提示】

1、第一行有1个元素,第n行有n个元素

2、每一行的第一个元素和最后一个元素都是1

3、从第三行开始,对于非第一行元素和最后一个元素的元素

      yanghui[i][j]=yanghui[i-1][j-1]+yanghui[i-1][j]

package com.company;

import java.util.Scanner;

public class TestYangHui {
    public static void main(String[] args) {
        System.out.print("请输入要输入杨辉三角的行数:");
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        int[][] yanghui = new int[num][];
        //初始化二维数组
        for (int i = 0; i < yanghui.length; i++) {
            yanghui[i] = new int[i + 1];
        }
        //显式的为二维数组中的每个元素赋值
        for (int i = 0; i < yanghui.length; i++) {
            for (int j = 0; j < yanghui[i].length; j++) {
                yanghui[i][0] = yanghui[i][i] = 1;
                if (i > 1 && j > 0 && j < i) {
                    yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
                }
            }
        }
        //打印显示
        for (int i = 0; i < yanghui.length; i++) {
            for (int j = 0; j < yanghui[i].length; j++) {
                System.out.print(yanghui[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值