澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:入门基础三四,二维数组

2019-06-29 作者:www.8455.com   |   浏览(175)

 

】二维数组                      衡行纵列

数组:数组是一组具有相同类型的值的集合,可以通过索引来访问数组中的元素。

数组、集合、异常捕获

数组、集合、异常捕获

  所谓数组,是有序的元素序列。 若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。

int[,] arr = new int[2,3]{{2,3,4},{5,6,7}};            //2行  3列    动态初始化

声明数组的语法: A.数据类型 [] 数组名称; B.数据类型 [] 数组名称 = new 数据类型[数组大小]; C.int [] arr = {1,3,4,5,5,3,}; 通过指定位置索引:arr[0]

数组:

数组:

  简单来说,数组是一个容器,存储相同类型的数据,并且容量是固定的。下面我们来简单整理一下数组的基本内容。

int[,] arr_1 = new int[,]{{1,3},{4,5},{6,7}};          //3行  2列

多维数组:多个线性数组的值   .GetLength()         一维:int [] arr = new int[2];  二维:int [,] arr = new int[3,5];  三维:int [,,] arr = new int[2,4,5]; 多维数组使用GetLength获取长度,维数同样是从0开始。

一次性存储多个相同类型的变量。

一次性存储多个相同类型的变量。

数组的存储方式;

int[,] arr_2 = {{12,34,45},{32,16,25} };             //2行  3列     静态初始化                 

交错数组:“数组中数组”。()  .Length 声明语法:int [][] arr = new int[2][];//arr包含两个元素    int [0] = new int[2];//第一个元素是两个整数的数组    int [1] = new int[3];//第二个元素是三个整数的数组 赋值:arr[0][0] = 100; 与多维数组相比较,交错数组具有更好的性能。

一维数组:

一维数组:

  所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。

for (int i = 0; i < 2; i ) {                                    //行数

System.Array数组: 声明语法:Array arr = Array.CreateInstance(typeof(int),3);//类型为int,长度为3

语法:

语法:

  澳门新萄京官方网站 1

            for (int j = 0; j < 3; j ) {                         //列数

typeof关键字用于数据类型。

 Using  System.Collections 集合:使用count获取集合长度。 Hashtable集合:语法:Hashtable name = new Hashtable(); 例:Hashtable hs = new Hashtable();             //添加             hs.Add(4,"张三");             hs.Add(6,"李四");             hs.Add(7,"王五");             //hs.Remove(4);//删除             //Console.WriteLine(hs.Count);//获取集合长度             Console.WriteLine(hs["Key"]);//获取key值             Console.WriteLine(hs["Values"]);//获取values值      //foreach遍历数组Values值             foreach(object lan in hs.Values )             {                 Console.WriteLine(lan.ToString());             }

ArrayList集合:语法:ArrayList name = new ArrayList(); 例: ArrayList al = new ArrayList();      //添加元素             al.Add(12);             al.Add("蓝天");             al.Add(3.14);             al.RemoveAt(0);//移除数组列表中指定的索引位置的元素             al.Insert(0,"O(∩_∩)O哈哈~");//插入数组列表中指定的索引位置      Remove:移除元素。TrimToSize:将容量设置为ArrayList中元素的实际数目             for (int i = 0; i < al.Count;i )             {                 Console.WriteLine(al[i]);//循环输出所有元素             }

============================================================================== 数组与集合的区别:

  数组         集合     使用length获取长度              使用count获取长度       固定的长度             非固定长度,可增可删(object) 区别 数据类型固定(申请什么类型就得添加什么类型的值)  object类型(任意添加任何类型)      直接赋值          使用Add添加                for                                                      foreach              system下                                                

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

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

 

                       Console.Write("{0} ",arr[i,j]);

collection下

hashtable与Arraylist的区别: hashtable键值映射,简单说键对应值,我们认给每值都起名字,键所谓名字,我们通过名字来寻找值,而arraylist集合,线性结构存储数据,集合存储内容都值,并且我们给每值用索引做编号,所遍历过程我们用索引;

arraylist有序,而hashtable无序;

arraylist可在特定位置添加、删除元素,而hashtable只能顺序添加。

声明数组的语法:

声明数组的语法:

一维数组:

              }

arraylist  索引为0      hashtable   object(自定义)

嵌套循环:外层循环用来控制输出的行数,内层循环用来控制输出的列数。

//99乘法表             for(int i = 0;i <= 9;i )             {                 for (int j = 0; j < i;j )                 {                     Console.WriteLine((j 1) "*" i "=" (i*(j 1)) " ");                 }                 Console.WriteLine("n");             }

冒泡排序:数组元素的排序。 (一种算法)

两层循环嵌套:外层循环  N-1   内层循环  N-1-i  (N 代表数组或集合的长度)

例: //冒泡排序             int[] arrl = {3,6,2,7,9,12,4 };//申请数组             int temp;//定义全局变量             for(int i = 0;i < arrl.Length-1;i )//控制比较的趟数,这个循环一次表示比较了一趟             {                 for (int w = 0; w < arrl.Length - i - 1; w )                 {                     if(arrl[w] < arrl[w 1])                     {                         temp = arrl[w];                         arrl[w] = arrl[w 1];                         arrl[w 1] = temp;                     }                 }             }             foreach(int wy in arrl)//遍历输出排序之后的数组             {                 Console.WriteLine(wy);             }

==============================================================================

错误调试: try{//抛出异常      //程序代码; }catch(Exception e){//捕获并处理异常.如果有多个catch块,父类(Exception)必须在后面      //异常处理代码;      Console.WriteLine(e.Message);//显示描述错误状况的文本      Console.WriteLine(e.Source);//显示导致异常发生的应用程序或对象的名称      Console.WriteLine(e.StackTrace);//提供在堆栈中所调用方法的详细信息,并首先最近调用的方法。      Console.WriteLine(e.InnerException);//提供对内部异常的访问。

} finally{//最终处理 }

黑盒测试:不管代码是什么,只要功能可以实现就是成功。 白盒测试:与黑盒相反。

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

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

  

Console.WriteLine ();                                       //换行

B.数据类型 [] 数组名称 = new 数据类型[数组大小];

B.数据类型 [] 数组名称 = new 数据类型[数组大小];

声明数组

  datatype[] arrayName;

注:datatype定义存储的数据类型,[]表示数组的维数,arrayName 数组名;

例如:

 

1  int[] arr;

 

 

}

C. 数据类型 [] 数组名称 = {数据,数据,数据,数据};

C. 数据类型 [] 数组名称 = {数据,数据,数据,数据};

初始化数组

  直接定义一个已知元素值的数组

  类型[] arr={元素1,元素2,元素3,...};这种格式只有在创建数组时才可以用

  定义一个已知长度的数组;

  类型[]澳门新萄京官方网站, arr=new 类型[长度];

  定义一个已知长度已知数据的数组

  类型[] arr=new 类型[长度]{元素1,元素2,元素3,...}; 虽然没有定义长度,但通过后面的元素也可以确定数组的长度   类型[] arr=new 类型[]{元素1,元素2,元素3,...};

注:

  1. 元素就是数组中存储的数据;
  2. 长度就是数组中可存储的元素个数

 

例如:

  

1 int[] arr={1,2,3};//数组总共存储了3个元素
2 int[] brr=new int[4];//数组存储了4个0
3 bool[] crr=new bool[3];//数组中存储了3个false

 

 

二维数组中,第n个元素对应的值为

***数组的长度一旦固定了,就不能再被改变了

***数组的长度一旦固定了,就不能再被改变了

访问数组中的元素

  arrayname[下标]

注:下标是数组中的索引,编号,第一个元素的下标是0,第二个是

  1,依次类推,最后一个长度-1;

例如:

  

1 int[] arr={1,3,5};
2 //访问第二个元素
3 Console.WriteLine(arr[1]);

>>结果:3

 

int [a,b];

可以通过索引来访问数组中的元素: 数组名称[索引位置]

可以通过索引来访问数组中的元素: 数组名称[索引位置]

修改指定下标的值

  arrayname[下标]=值;

注:通过赋值符号=,可以给数组指定的下标重新赋值,但数据可以删除或添加新元素,因为是固定长度;

例如:

  int[] arr={1,3,5,7}; arr[0]=2; Console.WriteLine(arr[0]);

>>结果:2;//数组第一个下标的元素发生改变了

  访问数组的长度arrayname.Length;

例如:

int[] arr={1,3,5,4};
Console.WriteLine(arr.Length);

>>结果:4

注意:没有增删的方法

多维数组

i = (n-1)/b;

案例:

案例:

C# 支持多维数组。多维数组又称为矩形数组。

声明数组

  声明一个二维数组,如下: 类型[,] 数组名;

  声明一个三维数组,如下: 类型[,,] 数组名;

j = (n-1)%b;

 澳门新萄京官方网站 2

澳门新萄京官方网站 3

二维数组

多维数组最简单的形式是二维数组。一个二维数组,在本质上,是一个一维数组的列表。

一个二维数组可以被认为是一个带有 x 行和 y 列的表格。下面是一个二维数组a,包含 3 行和 4 列:

  澳门新萄京官方网站 4

 

所以访问二维数组的元素:a[行下标,列下标];

初始化二维数组:

两行三列  =>  三行两列

澳门新萄京官方网站 5

澳门新萄京官方网站 6

int[,] arr=new int[行数,列数];

int[,] arr={{元素,元素},{元素,元素},{元素,元素}}

int[,] arr=new int[,]{{},{},{}};

 

访问二维数组的元素:

数组名[行下标,列下标]

例如:

1 arr[2,3]

 

 

指定下标赋值:

数组名[行下标,列下标]=新值;

例如:arr[2,3]=2000;

 

访问数组的长度:

new 类型[行数,列数]

  1. 行数:数组名.GetLength(0);
  2. 列数 :数组名.GetLength(1);
  3. 总的元素个数:数组名.Length

//多维数组:二维数组,矩形数组bool[,] crr=new bool[3,4];

//行数,二维数组的行数

Console.WriteLine("行数:" crr.GetLength(0));

//列数,二维数组的列数

Console.WriteLine("列数:" crr.GetLength(1));

//返回二维数组中的总元素个数: Console.WriteLine(crr.Length);

 

int[,] arr = new int[2,3]{{2,3,4},{5,6,7}};

 

多维数组:多个线性数组的值

交错数组

交错数组是数组的数组,一个一维数组中可以存储多个不同长度的一维数组从而形成了交错数组的二维数组;

声明数组

您可以声明一个带有 int 值的交错数组 scores,如下所示:

1 int [][] scores;

声明数组不占内存,创建上面的数组:

1 int[][] scores = new int[5][];
2 for (int i = 0; i < scores.Length; i  )
3 {
4 scores[i] = new int[4];
5 }

 

初始化数组

您可以初始化一个交错数组,如下所示:

1 int[][] scores = new int[2][]{new int[]{92,93,94},new int[]{85,66,87,88}};

 

其中,scores 是一个由两个整型数组组成的数组 -- scores[0] 是一个带有 3 个整数的数组,scores[1] 是一个带有 4 个整数的数组。

 

循环遍历交错数组

如下所示:

1 for(int i=0;i<scores.Length;i  ){//循环外维的长度
2     for(int j=0;j<scores[i].Length;j  ){//循环内维的长度
3         Console.WriteLine(scores[i][j]);
4     }
5 }

 

 

int[,] arr_1 = new int[3,2];

多维数组:多个线性数组的值 

二维:int [,] arr = new int[3,5];

数组总结:

int[] 是一维数组,一组相同类型的数据的集合;

int[,] 是多维二维数组,它就是传统意义上 n x m 的表;

int[][] 是交错数组二维数组,为不定数组,它其实是一个 int[] 里嵌套着int[],可以理解为 (int[])[]。

如下图所示:

澳门新萄京官方网站 7

 

for (int i = 0; i < 2; i ) {

二维:int [,] arr = new int[3,5];

三维:int [,,] arr = new int[2,4,5];

            for (int j = 0; j < 3; j ) {

三维:int [,,] arr = new int[2,4,5];

多维数组使用GetLength获取长度,维数同样是从0开始

                       arr_1[j,i] = arr[i,j];                    //行列交换

多维数组使用GetLength获取长度,维数同样是从0开始

案例:

             }

案例:

澳门新萄京官方网站 8

}

 澳门新萄京官方网站 9

澳门新萄京官方网站 10

for (int a = 0; a < 3; a ) {                             //遍历数组 打印

澳门新萄京官方网站 11

交错数组:数组中数组。

            for (int b = 0; b < 2; b ) {

交错数组:数组中数组。

声明语法:int [][] arr = new int[2][];//arr包含两个元素

                        Console.Write("{0} ",arr_1[a,b]);

声明语法:int [][] arr = new int[2][];//arr包含两个元素

int [0] = new int[2];//第一个元素是两个整数的数组

              }

int [0] = new int[2];//第一个元素是两个整数的数组

int [1] = new int[3];//第二个元素是三个整数的数组

Console.WriteLine ();

int [1] = new int[3];//第二个元素是三个整数的数组

与多维数组相比较,交错数组具有更好的性能。

}

与多维数组相比较,交错数组具有更好的性能。

澳门新萄京官方网站 12

澳门新萄京官方网站:入门基础三四,二维数组。//求最大元素及所在行和列

 澳门新萄京官方网站 13

Array数组:

int[,] arr_1 = new int[,]{{1,3,5,6},{5,6,4,5},{6,7,5,8}};

Array数组:

声明语法:Array arr = Array.CreateInstance(typeof;//类型为int,长度为3

//记录最大值及所在的下标

声明语法:Array arr = Array.CreateInstance(typeof(int),3);//类型为int,长度为3

澳门新萄京官方网站 14

int max = arr_1 [0, 0], x=0, y=0;

 澳门新萄京官方网站 15

集合:

for (int i = 0; i < 3; i ) {

集合:

在本篇只讲述楼主在项目中常用的几个集合类;

            for (int j = 0; j < 4; j ) {

在本篇只讲述楼主在项目中常用的几个集合类;

[PS: 想看.NET 中集合大盘点请看 ]

                        if (max <arr_1[i,j]){

[PS: 想看.NET 中集合大盘点请看 ]

ArrayList

                            max = arr_[i,j];

ArrayList

澳门新萄京官方网站 16

                            x=i;                                    //确定下标

 澳门新萄京官方网站 17

List:

                            y=j;

List:

澳门新萄京官方网站 18

              }

 澳门新萄京官方网站 19

Hashtable:

       }

Hashtable:

澳门新萄京官方网站 20

}

 澳门新萄京官方网站 21

Hashtable与Arraylist的区别:

Console.WriteLine ("max= " max "x= " x "y= " y);

Hashtable与Arraylist的区别:

Hashtable键值映射,简单说键对应值,我们认给每值都起名字,键所谓名字,我们通过名字来寻找值,而Arraylist集合,线性结构存储数据,集合存储内容都值,并且我们给每值用索引做编号,所遍历过程我们用索引;

对角线元素和

Hashtable键值映射,简单说键对应值,我们认给每值都起名字,键所谓名字,我们通过名字来寻找值,而Arraylist集合,线性结构存储数据,集合存储内容都值,并且我们给每值用索引做编号,所遍历过程我们用索引;

Arraylist有序,而Hashtable无序;

int sum = 0;

Arraylist澳门新萄京官方网站:入门基础三四,二维数组。有序,而Hashtable无序;

Arraylist可在特定位置添加、删除元素,而Hashtable只能顺序添加。

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

Arraylist可在特定位置添加、删除元素,而Hashtable只能顺序添加。

Arraylist 索引为0 , Hashtable object

for (int i = 0; i < 3; i ) {

Arraylist 索引为0 ,     Hashtable object(自定义)

Dictionary:

            for (int j = 0; j < 3; j ) {

 

澳门新萄京官方网站 22

                       if (i == j) {

Dictionary:

数组和集合的区别:

                            sum = arr[i,j];

 澳门新萄京官方网站 23

1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的

                        }

数组和集合的区别:

2.数组要声明元素的类型,集合类的元素类型却是object.

             }

1.数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的

3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。

}

 

4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!

Console.WriteLine ("{0}",sum);

2.数组要声明元素的类型,集合类的元素类型却是object.

5.数组可以有维数,集合没有。

交错数组

 

异常捕获:

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

3.数组可读可写不能声明只读数组。集合类可以提供ReadOnly方法以只读方式使用集合。

我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些。

例如    int [ ] [ ] arr  = new int[3][ ];

 

在你的代码中应该经常性的使用try-catch来进行异常捕获。

4.数组要有整数下标才能访问特定的元素,然而很多时候这样的下标并不是很有用。集合也是数据列表却不使用下标访问。很多时候集合有定制的下标类型,对于队列和栈根本就不支持下标访问!

语法:

int[ ] arr_1 = {1,3,5 };

 

try

int[ ] arr_2 = {2,4 };

5.数组可以有维数,集合没有。

{

int[ ] arr_3 = {23,45,12,34 };

 

可能会出现异常的代码;

int [ ][ ] arr = new int[3][ ]{arr_1,arr_2,arr_3};

异常捕获:

}

arr [0] = new int[ ]{27,23,56 };                             //修改下标为0的元素

我们在程序中经常会出现各种各样的异常,你如果想要你的程序变得坚强一些。

//try和catch之间不能有其他的代码

arr [1] = arr_3;                                                      //使下标为1的元素等于arr_3的元素

在你的代码中应该经常性的使用try-catch来进行异常捕获。

catch

//遍历数组

 

{

for (int i = 0; i < arr.Length; i ) {

语法:

出现异常后要执行的代码;

            for (int j = 0; j < arr[i].Length; j ) {

try

}

                       Console.Write ("{0} ",arr[i][j]);

{

执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行。

              }

    可能会出现异常的代码;

如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,

Console.WriteLine();

}

而是直接跳到catch中执行代码

}

//try和catch之间不能有其他的代码

try{

foreach遍历数组

catch

//抛出异常

int[ ] arr = {1,2,5,6,8,7};

{

//程序代码;

int sum = 1;

    出现异常后要执行的代码;

}catch(Exception e){//捕获并处理异常.如果有多个catch块,父类(Exception)必须在后面

foreach (var a in arr) {                       //a不能进行修改

}

//异常处理代码;

               sum *= a;

 

Console.WriteLine(e.Message);//显示描述错误状况的文本

}

执行过程:如果try中的代码没有出现异常,那么catch中的代码不会执行。

Console.WriteLine;//显示导致异常发生的应用程序或对象的名称

Console.WriteLine ("{0}",sum);

如果try中的代码出现了异常,那怕这行出现异常的代码后面还有一百行都不会执行了,

Console.WriteLine(e.StackTrace);//提供在堆栈中所调用方法的详细信息,并首先最近调用的方法。

而是直接跳到catch中执行代码

Console.WriteLine(e.InnerException);//提供对内部异常的访问。

string str = "Hello,lanou!";

 

}

char[ ] chars = str.ToCharArray();                                   //得到字符串的字符数组

try{

finally{

//char[ ] chars_1 = "Hello,lanou!".ToCharArray();

//抛出异常

//最终处理

int sum = 0;

 //程序代码;

}

for (int i = 0; i < chars.Length; i ) {

}catch(Exception e){//捕获并处理异常.如果有多个catch块,父类(Exception)必须在后面

澳门新萄京官方网站 24

            if (chars[i] =='l') {

     //异常处理代码;

澳门新萄京官方网站 25

                  sum

     Console.WriteLine(e.Message);//显示描述错误状况的文本

好了 , 本篇就到这里了,另本篇提供的案例只有截图,没有运行的结果,请自行处理咯。希望能对初学者带来帮助,更希望大神能带带我们,带我们装逼,带我们飞。。。

          }

     Console.WriteLine(e.Source);//显示导致异常发生的应用程序或对象的名称

最后打个小广告:QQ群:*.NET**一步步一幕幕 群号:590170361***(加群备注:博客园看到的)

}

     Console.WriteLine(e.StackTrace);//提供在堆栈中所调用方法的详细信息,并首先最近调用的方法。

Console.WriteLine ("{0}",sum);

     Console.WriteLine(e.InnerException);//提供对内部异常的访问。

string str = "Hello,lanou!";

 

char[ ] chars = str.ToCharArray();

}

// char[ ] chars_1 = "Hello,lanou!".ToCharArray();

finally{

int sum = 0;

//最终处理

foreach (var ch in chars) {

}

               if (ch == 'l') {

 澳门新萄京官方网站 26

                    sum;

澳门新萄京官方网站 27

}

 

Console.WriteLine ("{0}",sum);

 

好了 , 本篇就到这里了,另本篇提供的案例只有截图,没有运行的结果,请自行处理咯。希望能对初学者带来帮助,更希望大神能带带我们,带我们装逼,带我们飞。。。

最后打个小广告:QQ群:* .NET** **一步步一幕幕   群号:590170361*** (加群备注:博客园看到的)

 

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站:入门基础三四,二维数组

关键词: