首页 > 编程语言 >java -- 二维数组

java -- 二维数组

时间:2023-04-12 21:12:30浏览次数:32  
标签:java -- System int 二维 数组 yangHui new out

基本概念

在Java中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。
Java 并不直接支持二维数组,但是允许定义数组元素是一维数组的一维数组,以达到同样的效果。

创建及初始化

// 创建方式和数组相似 第一个中括号表示行,第二个中括号表示列
// 表示创建了拥有3个子数组且每个子数组都有两个元素的二维数组
int[][] arrarr1 = new int[3][2];
// 表示创建了拥有3个子数组, 但子数组全部为null 的二维数组
int[][] arrarr2 = new int[3][];
// 静态初始化, 创建二维数组并进行赋值操作
int[][] arrarr3 = new int[][]{{1,23},{23,56,1},{1,4,7}};
int[][] arrarr4 = {{1,23},{23,56,1},{1,4,7}};
// 特殊写法!!!
int[] x, y[]; // 此处 x是一维数组, y是二维数组

元素的获取

// 获取单个元素
System.out.println(arrarr3[1][2]);
// 1

// 查看arrarr2数组的元素
for (int[] arr : arrarr2) {
    System.out.println(arr);
}
/*
获取到arrarr2中数组的地址值
null
null
null
*/

for (int[] arr: arrarr3) {
    for (int a: arr) {
        System.out.print(a + " ");
    }
    System.out.println();
}
/*
1 23 
23 56 1 
1 4 7 
*/

为子数组赋值

arrarr2[0] = new int[2];
arrarr2[1] = new int[4];
arrarr2[2] = new int[1];
for (int[] arr : arrarr2) {
    for (int tmp : arr) {
        System.out.print(tmp + "\t");
    }
    System.out.println();
}
/*
0    0    
0    0    0    0    
0    
*/

练习

二维数组打印一个10行的杨辉三角

/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
第一行一个元素, 第n行有n个元素
每行的第一个元素和第二个元素都是1
从第三行开始 对于非第一个和最后一个元素的元素:
*/
yanghui[i][j] = yanghui[i - 1][j - 1] + yanghui[i - 1][j];
int[][] yangHui = new int[10][];
for (int i = 0; i < 10; i++) {
    yangHui[i] = new int[i + 1];
    for (int j = 0; j < yangHui[i].length; j++) {
        if (j == 0 || j == yangHui[i].length - 1) {
            yangHui[i][j] = 1;
        } else {
            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();
}

假设有一个矩阵为5行5列,该矩阵是由程序随机产生的100以内数字排列而成。下面使用二维数组来创建该矩阵,代码如下:

public class Test{
    public static void main(String[] args){
        int[][] matrix = new int[5][5];

        for(int i = 0; i < matrix.length; i++) {
            for(int j = 0; j < matrix[i].length; j++) {
                matrix[i][j] = (int)(Math.random() * 100);
            }
        }

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

标签:java,--,System,int,二维,数组,yangHui,new,out
From: https://www.cnblogs.com/paopaoT/p/17311258.html

相关文章

  • 7663: 股票买卖 动态规划/线性dp
    描述 最近越来越多的人都投身股市,阿福也有点心动了。谨记着“股市有风险,入市需谨慎”,阿福决定先来研究一下简化版的股票买卖问题。假设阿福已经准确预测出了某只股票在未来N天的价格,他希望买卖两次,使得获得的利润最高。为了计算简单起见,利润的计算方式为卖出的价格减去买入的......
  • 水文站点位置信息获取
    setp1下载json文件打开全国雨水情站点位置查询网地址为:http://xxfb.mwr.cn/hydroSearch/mapSearch将该网址下载为.json文件setp2将json文件转为excel表格利用在线工具转换下载即可,例如在线json转excel工具处理好的excel文件如果不想自己做,也可以直接下载处理好......
  • 别名的使用场景
    SQL语句可以为表名称或列名称指定别名。(别名有时也称为导出列,不管是导出列还是别名,它们所代表的都是相同的东西。)SQL别名SQL别名用于为表或表中的列提供临时名称。SQL别名通常用于使表名或列名更具可读性。SQL一个别名只存在于查询期间。别名使用AS关键字赋......
  • c++指针参数传递和引用参数传递的区别
    1) 指针参数传递本质上是值传递,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,会在栈中开辟内存空间以存放由主调函数传递进来的实参值,从而形成了实参的一个副本(替身)。值传递的特点是,被调函数对形式参数的任何操作都是作为局部变量进行的,......
  • 这样也行,在lambda表达式中优雅的处理checked exception
    简介最近发现很多小伙伴还不知道如何在lambda表达式中优雅的处理checkedexception,所以今天就重点和大家来探讨一下这个问题。lambda表达式本身是为了方便程序员书写方便的工具,使用lambda表达式可以让我们的代码更加简洁。可能大多数小伙伴在使用的过程中从来没有遇到过里面包含......
  • 酒店业要“狂飙”了?
    文|智能相对论作者|范柔丝在消费行业迅速复苏的浪潮下,无论从销量还是数量来看,酒旅行业蛰伏三年后,终于开启了业绩狂飙。从数量来看,企查查数据显示,截至目前,我国现存酒店相关企业233.5万家,2023年第一季度新增8.8万家,同比增加24.0%。从销量来看,携程发布五一假日旅游前瞻称,国内游订单已......
  • Android sqlite 数据库查询,插入,删除,更新demo<第1章>
    //20140424创建数据库帮助类DataBaseHelper,继承SQLiteOpenHelper, 1. 编写构造函数,实现数据库创建;publicstaticfinalStringTAG="ListViewActivity";privatestaticintVERSION=1;privatestaticfinalStringTABLE_NAME="user1";privatestaticfinalSt......
  • 数据插入
    09:07:36.078[DEBUG][main][java.sql.Connection]-{conn-100045}PreparingStatement:insertintoRS_ACTIONRECORD(ACTIONNAME,SYSTRNID,OLDSTATUS,NEWSTATUS,AUDITTIMESTAMP,WORKER)values(?,?,?,?,?,?)09:07:36.078[DEBUG][main][java.sql.PreparedS......
  • mysql性能优化二
    索引:高校检索数据的数据结构索引能干吗呢‘?索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提......
  • 证明volatile的可见性和原子性
     volatile作用保证内存可见性防止指令重排序注意:并不保证原子性可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值内存可见性volatile保证可见性的原理是在每次访问变量时候都会进行一次刷新,因此每次访问都是准没存中最新的版本,所以......