Java入门基础知识第九课——二维数组

前面二白讲了关于一维数组的相关知识和操作,Java中的二维数组本质上是每个一维数组都包含一个或多个元素,其中每个元素都代表二维数组中的一个元素。二维数组一般应用在矩阵的一些运算、二维数据的处理、图表的绘制、数据库的存储等方面。特别是在处理数据表示矩阵等情况下非常有用,可以方便的存储和操作数据。这次咱们说一下二维数组的简单知识和常用的基础操作。

一、二维数组的创建

1.第一种

1)声明二维数组

数据类型[][] 数组名; 数据类型 数组名[][];

2)分配空间

数组名 = new 数据类型[数组长度][数组长度];

注意:第一个数组长度说明的是当前这个二维数组中有几个元素(有几个一维数组),第二个数组长度说明的是这个二维数组里面的每一个元素(又是一个一维数组)的长度; 第二个数组长度可以省略不写

3)赋值:数组名[下标][下标] = 数据;

遍历二维数组

int[][] nums;
nums = new int[3][2];
nums[0][0] = 10;
        nums[0][1] = 20;

        nums[1][0] = 30;
        nums[1][1] = 40;

        nums[2][0] = 50;
        nums[2][1] = 60;
System.out.println(nums[0][0]);
        nums[0][0] = 100;
        System.out.println(nums[0][0]);

        System.out.println("----------------------------");
for(int i =0;i< nums.length;i++){
            // System.out.println(nums[i]);//这里输出的是二维数组中的每一个元素,这个元素又是一个一维数组,所以输出的是一维数组在内存中的地址值,没有意义,继续遍历这个元素(一维数组)
            for(int j=0;j<nums[i].length;j++){
                System.out.print(nums[i][j]+" ");
            }
            //输出二位数组的一个元素(一维数组)值之后,换行
            System.out.println();
        }

2.第二种

1)声明二维数组、分配空间

数据类型[][] 数组名 = new 数据类型[数组长度][数组长度];

数据类型 数组名[][] = new 数据类型[数组长度][数组长度];

注意:第一个数组长度说明的是当前这个二维数组中有几个元素(有几个一维数组),第二个数组长度说明的是这个二维数组里面的每一个元素(又是一个一维数组)的长度;

2)赋值

3)遍历输出所有元素

package com.kgc.se;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:38
 * QQ:1512015112
 * VX:18056394367
 */


public class TwoDemo02 {
    public static void main(String[] args) {

        //1、声明二维数组、分配空间
        
        String[][] strs = new String[2][3];

        //2、赋值
        strs[0][0] = "qwe";
        strs[0][1] = "asd";

        strs[1][0] = "aaaa";
        strs[1][1] = "bbbbb";
        strs[1][2] = "cccc";

        //3、遍历输出所有元素
        for(int i =0;i<strs.length;i++){
            for(int j =0;j<strs[i].length;j++){
                System.out.print(strs[i][j]+" ");
            }
            System.out.println();
        }


    }
}

3.第三种

1、声明数组、分配空间、赋值合并写

数据类型[][] 数组名 = new 数据类型[][] 或 数据类型 数组名[][] = new 数据类型[][]

{{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};

注意:new之后[][]中不要数组长度,因为数组长度由元素个数决定

上面 三步合并写法可以简写

数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};

数据类型 数组名[][] = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};

2、遍历输出所有元素值

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

上面写法可以简写

数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};

数据类型 数组名[][] = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据n},...,{数据1,数据2,...,数据n}};

package com.kgc.se;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:38
 * QQ:1512015112
 * VX:18056394367
 */


public class TwoDemo03 {
    public static void main(String[] args) {

        //1、声明数组、分配空间、赋值合并写
       
        char[][] chars = new char[][]{{'a','b'},{'c','d','e','f'}};

        //2、遍历输出所有元素值
        for(int i =0;i< chars.length;i++){
            for(int j =0;j<chars[i].length;j++){
                System.out.print(chars[i][j]+" ");
            }
            System.out.println();
        }

        //上面写法可以简写
        
        boolean bools[][] = {{true,false},{false,false,false},{true,false,false,true}};

        //遍历数组
        for(int i =0;i< bools.length;i++){
            for(int j =0;j<bools[i].length;j++){
                System.out.print(bools[i][j]+" ");
            }
            System.out.println();
        }
    }
}

二、简单小练习

需求:已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩

package com.kgc.se;

import java.util.Scanner;

/**
 * @JdkVersion: 17
 * @Author: 二白程序员
 * @Date 2024/4/9 13:38
 * QQ:1512015112
 * VX:18056394367
 */


public class TwoDemo04 {
    public static void main(String[] args) {

        //需求:已知有3个班级各5名学员,请使用二维数组计算各个班级的总成绩

        //创建一个Scanner对象用来获取学生成绩
        Scanner scanner = new Scanner(System.in);

        //准备一个长度为3的double类型的二维数组,这个二维数组里面的每个元素都是长度为5的double类型的一维数组
        double[][] scores = new double[3][5];

        //通过循环的方式将每个学生的成绩存储到这个二维数组中
        for(int i =0;i<scores.length;i++){
            System.out.println("------------------第"+(i+1)+"个班------------------");
            //输入每个班的学生成绩,用循环实现
            for(int j=0;j<scores[i].length;j++){
                System.out.println("请输入第"+(j+1)+"个学生的成绩:");
                scores[i][j]=scanner.nextDouble();

            }

        }

        //输出各个班级的总成绩

        System.out.println("------------------成绩统计------------------");
        for(int i =0;i< scores.length;i++){
            //在外层循环内声明一个double类型的变量,用来累加每个班级的学生总成绩
            double sum = 0;
            for(int j =0;j<scores[i].length;j++){
                sum+=scores[i][j];
            }
            System.out.println("第"+(i+1)+"个班级的总成绩:"+sum);
        }



    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/528856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

运筹学基础(六)列生成算法(Column generation)

文章目录 前言从Cutting stock problem说起常规建模Column generation reformulation 列生成法核心思想相关概念Master Problem (MP)Linear Master Problem (LMP)Restricted Linear Master Problem (RLMP)subproblem&#xff08;核能预警&#xff0c;非常重要&#xff09; 算法…

【学习】软件测试中,我们为什么要进行系统测试

软件测试中的系统测试是一个关键环节&#xff0c;它主要是通过测试整个系统来验证软件是否满足需求规格说明书中的要求。在软件开发周期的后期&#xff0c;系统测试扮演着非常重要的角色&#xff0c;因为它可以发现并纠正软件中存在的错误和缺陷&#xff0c;确保软件的质量和稳…

Google视觉机器人超级汇总:从RT、RT-2到AutoRT/SARA-RT/RT-Trajectory、RT-H

前言 随着对视觉语言机器人研究的深入&#xff0c;发现Google的工作很值得深挖&#xff0c;比如RT-2 ​想到很多工作都是站在Google的肩上做产品和应用&#xff0c;​Google真是科技进步的核心推动力&#xff0c;做了大量大模型的基础设施&#xff0c;服(推荐重点关注下Googl…

P1731 [NOI1999] 生日蛋糕——典型的回溯和剪枝题目,值得一看

今天尝试了一下md的编辑器&#xff0c;不知道有没有什么改变 [NOI1999] 生日蛋糕 题目背景 数据加强版 link 题目描述 7 月 17 日是 Mr.W 的生日&#xff0c;ACM-THU 为此要制作一个体积为 N π N\pi Nπ 的 M M M 层生日蛋糕&#xff0c;每层都是一个圆柱体。 设从下往…

scrapy 爬取m3u8视频

scrapy 爬取m3u8视频 【一】效果展示 爬取ts文件样式 合成的MP4文件 【二】分析m3u8文件路径 视频地址&#xff1a;[在线播放我独自升级 第03集 - 高清资源](https://www.physkan.com/ph/175552-8-3.html) 【1】找到m3u8文件 这里任务目标很明确 就是找m3u8文件 打开浏览器…

鸿蒙OS开发实战:【自动化测试框架】使用指南

概述 为支撑HarmonyOS操作系统的自动化测试活动开展&#xff0c;我们提供了支持JS/TS语言的单元及UI测试框架&#xff0c;支持开发者针对应用接口进行单元测试&#xff0c;并且可基于UI操作进行UI自动化脚本的编写。 本指南重点介绍自动化测试框架的主要功能&#xff0c;同时…

基于Java+SpringBoot+Vue文学名著分享系统(源码+文档+部署+讲解)

一.系统概述 随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的文学名著分享系统。当前的信息管理…

深入探索实时音视频技术:RTC程序设计权威指南

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

BUUCTF刷题十一道(12)SSTI专题一

文章目录 学习文章[Flask]SSTI[GWCTF 2019]你的名字[第三章 web进阶]SSTI[pasecactf_2019]flask_ssti[NewStarCTF 公开赛赛道]BabySSTI_One[Dest0g3 520迎新赛]EasySSTI[NewStarCTF 公开赛赛道]BabySSTI_Two[NewStarCTF 公开赛赛道]BabySSTI_Three[GYCTF2020]FlaskApp[CSCCTF 2…

java基础语法(13)

1. final关键字 final概述 学习了继承后&#xff0c;我们知道&#xff0c;子类可以在父类的基础上改写父类内容&#xff0c;比如&#xff0c;方法重写。那么我们能不能随意的继承API中提供的类&#xff0c;改写其内容呢&#xff1f;显然这是不合适的。为了避免这种随意改写的情…

关于转义符 \ 在php正则中的匹配问题

今天做题遇到一个很经典的问题&#xff0c;记录一下&#xff0c;先看一段代码 <?php $str&#xff0c;&#xff0c;"\\"; $pattern&#xff0c;&#xff0c;"/\\/"; if(preg_match($partern,$str,$arr)) { &#xff0c;&#xff0c;&#xff0c;&…

结构型模式--1.适配器模式【托尼托尼·乔巴】

1. 翻译家 在海贼王中&#xff0c;托尼托尼乔巴&#xff08;Tony Tony Chopper&#xff09;是草帽海贼团的船医&#xff0c;它本来是一头驯鹿&#xff0c;但是误食了动物系人人果实之后可以变成人的形态。 乔巴吃了恶魔果实之后的战斗力暂且抛开不谈&#xff0c;说说它掌握的第…

金仓数据库Kingbase的数据库开发管理工具KStudio连接乱码

背景&#xff1a; 金仓数据库V8R6&#xff0c;KStudio在Windows10上运行&#xff0c;JDK8 问题&#xff1a; 使用客户端连接数据库时&#xff0c;提示信息乱码&#xff0c;首选项设置字符集不管用&#xff0c;具体如下图所示&#xff1a; Before&#xff1a; After&#xff1…

018——红外遥控模块驱动开发(基于HS0038和I.MX6uLL)

目录 一、 模块介绍 1.1 简介 1.2 协议 二、 驱动代码 三、 应用代码 四、 实验 五、 程序优化 一、 模块介绍 1.1 简介 红外遥控被广泛应用于家用电器、工业控制和智能仪器系统中&#xff0c;像我们熟知的有电视机盒子遥控器、空调遥控器。红外遥控器系统分为发送端和…

【On Hold】又一本ESCI被紧急On Hold!!年发文量激增19倍令人匪夷所思

【SciencePub学术】前几日Hindawi撤稿事件闹得沸沸扬扬&#xff0c;整个学术界的关注点都在这次的撤稿事件。所有的期刊都进入自检模式&#xff0c;官方在审核期刊资质时也颇为严格了。 但是经小编查阅资料时发现&#xff0c;最近有一本ESCI期刊又被科睿唯安官方打上了On Hold…

基于SpringBoot+Vue的“漫画之家”系统(源码+文档+部署+讲解)

一.系统概述 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理…

【Shell】循环语句基础

Shell 循环 循环语句 Shell 循环循环的定义for 循环for循环的C语言格式 while 循环until 循环 循环的定义 循环在编程中通常指循环结构。 循环结构是编程中的一种控制结构&#xff0c;它允许代码在满足特定条件时重复执行一段特定的指令集合&#xff0c;这部分重复执行的代码…

ADP-2-20+ 信号调节 20MHz-2GHzRF功分器 合路器

ADP-2-20 是一款由Mini-Circuits公司出产的功分器&#xff08;power divider&#xff09;。这款功分器的工作温度规模为-40C至85C&#xff0c;贮存温度规模为-55C至100C。作为分路器&#xff0c;它的电源输入最高可达1W&#xff0c;内部功耗最大为0.125W。假如超越这些限制&…

BFS宽度优先搜索例题(蓝桥杯)——逃跑的牛

问题描述&#xff1a; 农夫John的一头牛逃跑了&#xff0c;他想要将逃跑的牛找回来。现假设农夫John和牛的位置都在一条直线上&#xff0c;农夫John的初始位置为N&#xff08;0≤N≤100,000&#xff09;&#xff0c;牛的初始位置为K&#xff08;0≤K≤100,000&#xff09;。农夫…

人社大赛算法赛题解题思路分享+季军+三马一曹团队

团队成员介绍: 梅鵾 上海交通大学 众安科技 算法工程师 吴栋梁 复旦大学 众安科技 算法工程师 李玉娇 复旦大学 众安科技 算法工程师 一、赛题背景分析及理解 本赛题提供了部分地区2016年度的医疗保险就医结…