第一章 一维数组

数组是一个数据容器,可用来存储一批同类型的数据。
1.1 数组的初始化格式
静态初始化(定义时确定数据):
简化格式:数据类型[] 数组名 = {元素1, 元素2, 元素3...};
示例:int[] arr = {12, 24, 36};
完整格式:数据类型[] 数组名 = new 数据类型[]{元素1, 元素2, 元素3...};
示例:int[] arr = new int[]{12, 24, 36};
注意:“数据类型[] 数组名” 也可写成 “数据类型 数组名[]”。
1.2 数组的访问
通过 数组名[索引] 访问元素(索引从0开始计数)。
在这里插入图片描述

System.out.println(arr); // 输出 [I@4eec7777 内存地址
System.out.println(arr[0]); // 输出 12
System.out.println(arr[1]); // 输出 24
arr[1] = 100; // 修改索引为1的元素为100

1.3 获取数组的长度(元素个数)
通过 数组名.length 获取长度。

// 获取数组的长度(即元素个数)
System.out.println(arr.length); // 输出 3

1.4 动态初始化数组
定义规则:定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度。
语法格式:
数据类型[] 数组名 = new 数据类型[长度];
示例:int[] arr = new int[3];
1.5 动态初始化数组元素默认值规则

|数据类型|明细                        | 默认值|
|基本类型|byte、short、char、int、long | 0    |
|基本类型|float、double               | 0.0  |
|基本类型|boolean                     | false|
|引用类型|类、接口、数组、String         | null |

1.6 设计输入成绩,得到和均极大极小
注意执行时,方式1或者方式2不能同时注释或者放开,只能选其一

package com.kgl;

import java.util.Arrays;
import java.util.Scanner;

public class score {
    public static void main(String[] args) {
        double[] myScores = inscore(4); // 方式1
        computer(myScores); // 方式1
//        inscore(4); // 方式2
    }

    public static double[] inscore(int renshu){ // 方式1
//    public static void inscore(int renshu){ // 方式2
        double scores[] = new double[renshu];
        Scanner sc= new Scanner(System.in);
        for(int i =0;i<renshu;i++){
            System.out.println("请输入分数:");
            double score=sc.nextDouble();
            scores[i]=score;
        }
        System.out.println("所有分数为:" + Arrays.toString(scores));
        sc.close();
//        computer( scores); // 方式2
        return scores; // 方式1
    }

    public static void computer(double[] scores){
        double sum = 0;
        double max = scores[0];
        double min = scores[0];
        for (int i=0;i<scores.length;i++){
            sum += scores[i];
            max = max > scores[i] ? max : scores[i] ;
            min = min < scores[i] ? min : scores[i] ;
        }
        double avg = sum / scores.length;
        System.out.println("总分:" + sum);
        System.out.println("平均分:" + avg);
        System.out.println("最高分:" + max);
        System.out.println("最低分:" + min);
    }
}

第二章 二维数组

数组中的每个元素都是一个一维数组,这个数组就是二维数组。
2.1 静态初始化
格式:数据类型[][] 数组名 = new 数据类型[][]{元素1, 元素2, 元素3, ...};
示例:int[][] arr = new int[][]{ {12, 24, 36} , {666, 888} , {10, 20, 30} , {999} };
2.2 动态初始化
格式:数据类型[][] 数组名 = new 数据类型[长度1][长度2];
示例:int[][] arr = new int[3][5];
(对应结构为:int[][] arr = new int[][]{ {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0, 0, 0, 0} };)
2.3 二维数组的访问
数组定义:int[][] arr = new int[][]{ {12, 24, 36} , {666, 888} , {10, 20, 30} , {999} };
访问规则:
获取行数组:数组名称[行索引] → 示例1:arr[2]
获取具体元素:数组名称[行索引][列索引] → 示例2:arr[2][1];
修改元素:数组名称[行索引][列索引]=? → 示例3:arr[3][0] = 111
2.4 二维数组的遍历

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

2.5 记录武林人士姓名和座位,点到的时候输出座位

import java.util.Scanner;

public class Arraydemo2 {
    public static void main(String[] args) {
        test2();
    }
    public static void test2() {
        String [][] set1 = new String[][]{{"张无忌","赵敏","周芷若"}
                ,{"张三丰","宋远桥","殷梨亭"}
                ,{"灭绝","成昆","玄冥二老","金毛狮王"}
                ,{"杨逍","纪晓芙"}};
        System.out.println(set1.length);
        System.out.println(set1[2].length);
        for(int i=0;i<set1.length;i++){
            for(int j=0;j<set1[i].length;j++){
                System.out.print(set1[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println("------------------");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入名称:");
        String name = sc.next();
        for (int i = 0; i < set1.length; i++) {
            for (int j = 0; j < set1[i].length; j++) {
                if(name.equals(set1[i][j])){
                    System.out.println("找到了,在"+(i+1)+"行"+(j+1)+"列");
                    return;
                }
            }
        }
        System.out.println("没有找到");
        sc.close();
   }
}

2.6 石头迷阵游戏初始化

package com.kgl;

public class Arraydemo3 {
    public static void main(String[] args) {
        test();
    }
    public static void test() {
        String[][] arr = new String[4][4];
        String num = "1";
        int count = 1;
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                arr[i][j] = num;
                count++;
                num = count+"";
                if (count>15){
                    num="";
                }
            }
        }
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                int index1 = (int)(Math.random()*arr.length);
                int index2 = (int)(Math.random()*arr[i].length);
                String temp = arr[0][0];
                arr[0][0] = arr[index1][index2];
                arr[index1][index2] = temp;
            }
            System.out.println();
        }
        for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            System.out.println();
        }
        
    }
}

更多推荐