第三章 数组 实践与练习(1)

综合练习1 数独

将1-9的数字放入3x3的数组中,判断该数组每行每列以及每个对角线的值是否相等。

java 复制代码
public static void main(String[] args) {
        int a[][] = new int[3][3];//创建一个3x3的数组
        int sum = 1;
        for (int i = 0; i < 3; i++) {//在数组中输入1-9
            for (int j = 0; j < 3; j++) {
                a[i][j] = sum;
                sum = sum + 1;
                System.out.print(a[i][j] + "\t");

            }
            System.out.println();
        }
        int lie1 = a[0][0] + a[1][0] + a[2][0];
        int lie2 = a[0][1] + a[1][1] + a[2][1];
        int lie3 = a[0][2] + a[1][2] + a[2][2];
        int dui1 = a[0][0] + a[1][1] + a[2][2];
        int dui2 = a[0][2] + a[1][1] + a[2][0];
        int hang1 = a[0][0] + a[0][1] + a[0][2];
        int hang2 = a[1][0] + a[1][1] + a[1][2];
        int hang3 = a[2][0] + a[2][1] + a[2][2];
        //判断每行每列以及对角线相加是否相等
        if (lie1 == lie2 && lie2== lie3 && lie3 == dui1 && dui1== dui2 && dui2== hang1 && hang1== hang2) {
            System.out.println("每行每列以及对角线上的数相加的值相等");
        }
        else
            System.out.println("每行每列以及对角线上的数相加的值不相等");


    }

综合练习2 矩形转置

交换二维数组int\[\]\[\]array= {{91,25,8},{56,14,2},{47,3,67}}的行列数据。

java 复制代码
public static void main(String[] args) {
        int array[][] = new int[][]{{91,25,8},{56,14,2},{47,3,67}};//定义新的数组,赋予初值
        int newarray[][] = new int[3][3];定义一个新的数组
        for (int i = 0; i < 3; i++) {//将第一个数组的每行循环赋予给第二个数组的每列
            for (int j = 0; j < 3; j++) {
                newarray[j][i] = array[i][j];

            }
        }
        for (int i = 0; i < 3; i++) {//循环输出数组
            for (int j = 0; j < 3; j++) {
                System.out.print(newarray[i][j] + "\t");
            }
            System.out.println();
        }

    }

综合练习3 杨辉三角

使用二维数组实现杨辉三角。

java 复制代码
public static void main(String[] args) {
        int a[][] = new int[10][10];//定义一个10x10的数组
        for (int i = 0; i < 2; i++) {//第一行第二行都是1
            for (int j = 0; j <= i; j++) {
                a[i][j] = 1;
                System.out.print(a[i][j] + "\t");
            }
            System.out.println();
        }
        //从第三行开始,每个数等于这个数上面的数和左边的数的和
        for (int i = 2; i >= 2 && i <10; i++) {
            for (int j = 0; j <= i; j++) {
                if (j  == i || j == 0) {//如果是每行第一列,为1
                    a[i][j] = 1;
                    System.out.print(a[i][j] + "\t");
                }
                else {
                    a[i][j] = a[i-1][j]+a[i-1][j-1];
                    System.out.print(a[i][j] + "\t");
                }
            }
            System.out.println();
        }

    }

综合练习4 推箱子游戏

编写一个简易的推箱子游戏,使用10x8的二维字符数据表示游戏画面,H表示墙壁,&表示玩家角色,o表示箱子。*表示目的地。玩家可以通过输入ADWS字符控制角色移动,当箱子推到目的地的时候显示游戏结束。

java 复制代码
public static void main(String[] args) {
        String a[][] = new String[8][10];//创建一个8x10的数组
        System.out.println("--------------------------------------");
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a[i].length; j++) {
                if(i == 0||i == 7 ||j == 0||j == 9){//在周围一圈围上H
                    a[i][j] = "H";

                }
                else {//在内部选择性填充墙壁H
                    if(i == 1 && j == 3
                            ||i == 2 && j == 3 ||i == 2 && j == 5
                            ||i == 3 && j == 3||i == 3 && j == 5||i == 3 && j == 6||i == 3 && j == 8
                            ||i == 4 && j == 8
                            ||i == 5 && j == 4||i == 5 && j == 5||i == 5 && j == 6
                            ||i == 6 && j == 4){
                        a[i][j] = "H";
                    }
                    else {
                        if(i == 1 && j == 1){//定点输入
                            a[i][j] = "&";
                        }
                        else {
                            if(i == 2 && j == 2){//定点输入
                                a[i][j] = "O";
                            }else {
                                if(i == 6 && j == 5){//定点输入
                                    a[i][j] = "*";
                                }
                                else {//其他地方填充空格
                                    a[i][j] = " ";
                                }
                            }
                        }
                    }
                }
                System.out.print(a[i][j]+"\t");循环输出
            }
            System.out.println();
        }
        System.out.println("--------------------------------------");
        System.out.println("A左移,D右移,W上移,S下移,请输入你的指令:");
    }
相关推荐
小bo波4 小时前
Java Swing 图形用户界面实验 —— 从算术练习到游戏开发的完整实践
java·课程设计·gui·游戏开发·扫雷·swing
咖啡八杯5 小时前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
HjhIron9 小时前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩10 小时前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹12 小时前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
SamDeepThinking16 小时前
裁掉那个差程序员后,给你看团队里高手的代码:这个习惯,希望你有
java·后端·程序员
vivo互联网技术16 小时前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
朕瞧着你甚好17 小时前
技术雷达 & Java 集成评估报告 — Apache Tika 3.3.1
java·ai编程
浮生望17 小时前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法
黄敬峰17 小时前
面试必刷:从JS底层包装类到双指针,彻底搞懂字符串与回文算法
算法