二维数组的赋值

int[][] a = new int[10][];
for(int i = 0 ; i < 10; i ++){
int[i] = new int[i];

for(int j = 0 ; j <= i ; j ++){
a[i][j] = 1;
}

}

为什么运行会出现空的异常?

1、你int[i] = new int[i];的用法是绝对错误的,int是关键字,不能定为变量名,而且根据你的定义,你打二维数组已经定义过了,是a,所以要使用a[]
同时数组定义的时候,你new int[i],那么这一维数组中元素的数量就是i个,而元素的下标是从0开始的,分别对应0 ~ i-1 ,当你的i为1时,数组中只有一个元素,该元素对应的下标为0,由于你的i是从0开始的,所以2维数组的第一行是空的。前面说的定义维度为0会报错,切实试了一下,事实证明不会报错。

2、你的循环语句条件int j = 0 ; j <= i ; j ++中j是循环到等于i的,i是你数组的长度,这样必然会报下标溢出错误。
所以现在有两种改正方案:
一、
将int[i] = new int[i];改成a[i] = new int[i];
同时将int j = 0 ; j <= i ; j ++改成int j = 0 ; j < i ; j ++,去掉其中的等号,如果你上面那句是误打的话,那么你的程序出错的主要原因就是这句了
这种方法的输出结果第一行输出是空的,因为你a[0]中的元素是0个,输出如下:

1
11
111
1111
11111
111111
1111111
11111111
111111111
实际结果只有9行
二、
直接将int[i] = new int[i];改为a[i] = new int[i+1];
将长度改为i+1,这样j即是等于i,数组也不会溢出
下面的j相关的不需要改动
输出如下:
1
11
111
1111
11111
111111
1111111
11111111
111111111
1111111111
实际结果是10行,第一行不为空
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-28
int[i]=new int[i];没有数组变量呀!int[][] a =new int[10][];后边的长度也要写上int[][] a=new int[10][10];本回答被网友采纳
第2个回答  2012-07-28
你要a[i]=new int[i+1]这样
否则你循环开始就变成了new int[0]这样,当然会出错
第3个回答  2012-07-28
把new int[i]; 里面的i改成你的长度10
第4个回答  2012-07-28
是否没有初始化

结构体二维数组的赋值与定义
结构体二维数组的赋值可对结构体变量的成员逐个赋值,这种方式和数组相像,数组就是逐个元素逐一赋值,不同于数组,标准C中结构体变量可以整体赋值。结构体二维数组是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构,在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类,结...

二维数组赋值方法
为数组元素赋值有几种方式。 方式一: 像为变量赋值一样,逐一为每个元素赋值。 例如:Dim Student(1 To 3) as StringA(1)="张三"A(2)="李四"A(3)="王五"方式二: 采用Array函数为动态数组赋值,可以一次赋值多个元素。注意,此方法只能为变体型的动态数组赋值。 例如:Dim Grade()Grade=Arra...

二维数组不能直接赋值吗
1、用循环给数组中的数依次赋值。2、定义时直接给数组值。将某一数值赋给某个变量的过程,称为赋值。将确定的数值赋给变量的语句叫做赋值语句。各程序设计语言有自己的赋值语句,赋值语句也有不同的类型。所赋“值”可以是数字,也可以是字符串和表达式。

一维数组和二维数组的赋值区别是什么
维度不同,赋值方式不同。1、维度不同:一维数组只有一个维度,二维数组有两个维度。2、赋值方式不同:给一维数组赋值可以直接使用循环或者逐个赋值,给二维数组赋值需要使用两层循环。

C语言|二维数组的定义、初始化、赋值
是对每一行的第一列元素赋值,未赋值的元素的值为0。赋值后各元素的值为:1 0 0 2 0 0 3 0 0 再如:赋值后各元素的值为:0 1 0 0 0 2 3 0 0 2) 如果对全部元素赋值,那么第一维的长度可以不给出。例如:可以写为:3) 二维数组可以看作是由一维数组嵌套而成的;如果一个数组的...

在二维数组的定义语句中,不能给数组中每个元素赋初值
1.二维数组的定义与赋值:二维数组是一个由多个一维数组组成的数据结构,可以通过指定行数和列数来定义。在定义二维数组时,可以使用初始化列表来为数组中的每个元素赋初值。例如,对于一个3行4列的二维数组,可以这样定义并初始化:intarr[3][4]={{1,2,3,4},{5,6,78},{9,10,11,12}};...

二维数组正确初始化
1、二维数组的赋值方式可以按照行进行分段赋值,也可以连续赋值。例如,{{1,2},{0}}是分段赋值,而{1,2,3,4,5,6}则是连续赋值。2、在初始化二维数组时,可以只对部分元素进行赋值。对于int类型的数组,若未指定元素的值,系统会默认将其初始化为0。3、若对二维数组的全部元素进行赋值,此时...

C语言中二维字符数组应该怎样赋值?
二维数组赋值的一般形式是:dataType arrayName[length1][length2]。result二维字符数组可以这样赋值,result[0][0]=seq1[0] ;result[1][0]=seq2[0]。dataType arrayName[length1][length2],其中,dataType 为数据类型,arrayName 为数组名,length1 为第一维下标的长度,length2 为第二维下标...

Java二维数组赋值方式?
主要知识点2:双层for循环解决二维数组的赋值问题 publicstaticvoidmain(String[]args){ Scannerscanner=newScanner(System.in);System.out.print("请输入一维数组的长度:");intn=scanner.nextInt();\/\/换行 System.out.println();System.out.print("请输入二维数组的长度:");intm=scanner.nextInt(...

二维数组怎么赋值
答:不同语言的二维数组赋值可能略微有不同, C语言中二维数组的赋值如下所示。举例使用int arr[2][3],先定义一个2行3列的二维数组,存储元素为整型。分行给数组赋值,每行都放在一个中括号里面。举例int arr[2][3]={{1,2,3},{4,5,6}};按顺序对所有元素赋值,如int arr[2][3]={1...

相似回答