数组基本知识2

2024-08-25 16:44
文章标签 数组 基本知识

本文主要是介绍数组基本知识2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

前言

二维数组

使用原因

定义二维数组

访问数组元素

实例


 

前言

上一篇,我简单的复习了一维数组,本篇讲述二维数组的基本知识,帮助大家预习和复习。

二维数组

使用原因

本质原因:一维数组,已经无法满足解决实际问题的需要

例如:要统计一个学校各个班级学生的考试成绩,既要标示班级,又要标示学生成绩,如果使用一维数组的话,一个数组,只能表示一个因此当真正解决这项问题时,需要同时创建两个一维数组分别表示对应的目标,最后同时输出。但这样的写法是,比较繁琐的,为了使你编写的代码简洁,所以才有了二维数组。

定义二维数组

格式  1(已经确定好,行数和列数)

数据类型 [   ] [  ] 数组名=new  数据类型 [ 行数] [ 列数  ] ;

实例

int  [  ] [  ] xx=new int [3 ]  [4  ];

理解:上面代码,表示3*4 的二维数组,即3行4列的二维数组。其中 xx[0] ,xx[1],xx[2] 度可以理解成一个一维数组。

6b16890014ae43efb8bd4600a5e680b1.png

格式 2 (确定行数,但不确定列数)

数据类型 [  ]  [   ]数组名  =new 数据类型 [ 行数 ] [  ] ;

实例 

int [  ]  [  ] xx =new int [3 ] [  ];

注意:行数一定不能省略, 列数根据实际需要判断是否需要。

格式 3 (确定元素值)

数据类型 [  ]  [   ]数组名  = {   {第1行初始值} ,{第2行初始值}, {第3行初始值},......{第n行初始值}    } ;

实例

int  [  ]  [  ]xx=          {   {1,2} ,{3,4,5,6}, {7,8,9} } ;   

访问数组元素

我们知道二维数组,就相当于走楼梯。

大家小时候,在楼梯上玩,有时,有人会问你:你现在什么位置?你可能会说,我在3 楼 第四个阶梯(假设6层楼,每层楼有8个阶梯)。那么如果用二维数组应该怎么表示,我处在的楼梯位置呢

思路

首先创建一个二维数组表示 一栋楼的楼数和阶梯数。

int [  ] [ ] address= new int [ 3] [8] ;

其次 表示你所在的位置----我在3 楼 第四个阶梯

address [3] [4 ] 这就是我们所在的位置。

实例

 问题:统计 一个 公司 3 个 销售小组中每一个小组的销售额 以及整个公司的总销售额

第1 个小组 : 11,12 。

第2个小组 : 21,22,23 。

第3个小组 : 31,32,33,34 。

思路

最终目的:得到小组的销售额和总销售额

1 总销售额=所有小组销售额相加  ,并且小组销售,每一个小组成员销售相加

2 发现使用二维数组表示最为方便的(本题中,我们不仅要表示小组之间的关系还要表示小组内部的关系,需要使用到二维数组。如果使用一维数组的话,需要同时创建两个数组才行,过程比较繁琐)

3 使用循环嵌套,内层循环表示每一个小组销售总额,外层循环表示小组相加的最终销售总额。

代码如下

public class Example2 {public static void main(String[] args) {int [] [] arr=new int[3][];arr[0]=new int[]{11,12};arr[1]=new int[]{21,22,23};arr[2]=new int[]{31,32,33,34};int sum=0;//总销售额int groupsum=0;//小组销售额for(int i=0;i<arr.length;i++){for(int j=0;j<arr[i].length;j++){groupsum+=arr[i][j];}sum+=groupsum;System.out.println("小组销售"+groupsum);groupsum=0;}System.out.println("总销售额="+sum);}
}

c1e9257f4d424b5088e8ca4bdcdbbc4c.png

当你写完,你发现,小组销售额groupsum 只要在外层循环写一遍,就可以了。没必要在for循环外设置为全局变量。

修改后:

public class Example2 {public static void main(String[] args) {int [] [] arr=new int[3][];arr[0]=new int[]{11,12};arr[1]=new int[]{21,22,23};arr[2]=new int[]{31,32,33,34};int sum=0;//总销售额for(int i=0;i<arr.length;i++){int groupsum=0;//小组销售额for(int j=0;j<arr[i].length;j++){groupsum+=arr[i][j];}sum+=groupsum;System.out.println("小组销售"+groupsum);
//            groupsum=0;}System.out.println("总销售额="+sum);}
}

 

这篇关于数组基本知识2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106096

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

PHP7扩展开发之数组处理

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key => $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[

Go 数组赋值问题

package mainimport "fmt"type Student struct {Name stringAge int}func main() {data := make(map[string]*Student)list := []Student{{Name:"a",Age:1},{Name:"b",Age:2},{Name:"c",Age:3},}// 错误 都指向了最后一个v// a

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que