索引超出了数组界限是什么意思

 我来答
莫道無情
2019-11-14 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8.8万
展开全部

数组下标一般是从0开始的。 如果一个数组有三个元素,应该是a[0]、a[1]、a[2],如果a.Length=3,则会超出了数组的界限,因为数组中根本不存在下标为3的元素。

示例如下:

int[] score = new int[] { 89, 39, 100, 51, 94, 65, 70 };//分数

//score数组的长度为7,从零开始循环,而i<=score.Length=7就会报“索引超出了数组界限的错误,所以应该是i<score.Length

for (int i = 0; i <= score.Length; i++)  

{循环语句;}

扩展资料:

数组下标变量

对于以线性定址的向量,索引为i的元素处于位址B+c×i,其中B是固定的基底位址,c为常数,

有时称为位址增量或跨步。

如果有效的元素索引从0开始,则常数B只是数组第一个元素的位址。因此C语言指定数组的索引一定从0开始;许多开发人员会将该元素称为“第零”而不是“第一”。

然而若适当选择基底位址B,来作为第一个元素的索引起始值。譬如数组有五个元素,索引为1到5,基底位址B以B+30c来替换,则相同数组的这些元素索引将转为31到35。如果编号从0开始,则常数B可能不是任何元素的位址。

帐号已注销
2019-07-19 · TA获得超过1.2万个赞
知道答主
回答量:25
采纳率:0%
帮助的人:6206
展开全部

索引超出了数组界限是指在通过索引获取数组内的值时,索引超出了数组的总长度。

例如:int[] Array = {1,2,3,4,5,6,7,8,9,10};

在这个int型数组Array中有10个元素,它的总长度是10,索引是0-9。

当使用for循环获取数组内的值时,如果索引是10,则会报错,错误原因是

索引超出了数组界限。

for(int i=0;i<11;i++) {

System. out .println( String. format(“ 第%d元素的值是%\n",i+1 ,Array[i]));

}


扩展资料

数组的特点:

1、数组是相同数据类型的元素的集合。

2、数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。

3、数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4fecc95
2020-09-19 · TA获得超过5.1万个赞
知道小有建树答主
回答量:276
采纳率:100%
帮助的人:7万
展开全部

索引超出了数组界限解决方法:

a.connected[i] = vertices[i+1];

称之为索引i+1。这将导致一个index out of bounds exception。(在你n等于19的例子中:有效索引将是[0-18]。

你的循环将从0-18开始,但是在该行中,它将会添加一个18 + 1 = 19,这是一个无效索引)在你的循环中将条件更改为:

for (int i = 0; i<n-1; i+=2){

确保它在添加之后不会超出界限。

Vertex [] vertices = new Vertex[n]; int [] numbers = new int[n*2]; AdjacencyList[] all = new AdjacencyList [n+1];for (Vertex v : vertices){
System.out.println(v.value);

AdjacencyList a = new AdjacencyList(v);
for (int i = 0; i < n; i += 2)
{

if (numbers[i] == v.value){
a.connected[i] = vertices[i+1];//array index out of bounds exception:19
else { a.connected[i] = v; }
}
all[0] = a; //add the finished adjacency list to the array

}

与n = 19我可以得到一个索引超出边界错误在代码中指出的点。我不确定我哪里会出问题,因为一切都还在19的范围内。

顶点=顶点列表[1-19],数字是一个平坦的边缘数组。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小白梨哎吆喂

2020-09-19 · TA获得超过7.9万个赞
知道小有建树答主
回答量:1.7万
采纳率:45%
帮助的人:613万
展开全部

限制索引取值范围(0到 (数组长度-1)),或者增加数组的长度。

数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。
数组是通过下表进行访问,但超出下标(索引)最大值(数组长度-1)就会访问超出界限。

如:int [] arr= new int[2];;
arr[0]=1;
arr[1]=2;


此数组长度为2,下标最大为1(数组下标从0开始。
如果下标超出0-1这个范围就会出现索引超出界限问题。
限制下标(索引)的取值范围,或者数组长度增加都可以防止索引超出界限。

索引:

在数据库关系图中,可以在选定表的"索引/键"属性页中创建、编辑或删除每个索引类型。当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

索引的优点:

1、大大加快数据的检索速度;

2、创建唯一性索引,保证数据库表中每一行数据的唯一性;

3、加速表和表之间的连接;

4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

数组:

在C语言中, 数组 属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lllllh80
2019-07-15 · TA获得超过4.8万个赞
知道小有建树答主
回答量:450
采纳率:100%
帮助的人:11.7万
展开全部

索引超出数组界限,一个是判断一下循环语句中的循环上限是否出错,再一个就是直接更改数组大小。

“索引超出了数组界限"并不是说索引有多长,而是说这个索引在数组的界限当中找不到,可以适当增大数组的大小,使得下面用到的索引能够处在数组的界限中。当然数组不是越大越好,盲目增大数组大小势必会加大内存的开销,响应速度会变慢。

还有一种方法就是使用变量来动态控制数组大小,事先定义一个变量,通过用户的输入来决定这个数组到底有多大,这样避免了内存空间的浪费或者索引超出数组界限的情况出现。另外,由用户来决定数组大小也是要事先设定好上限的,否则用户恶意开销数组空间必然会导致死机。

通常就是定义一个常量,这样将来的程序的可读性好、并且可移植性也好,以 C 语言为例,可以如下定义:#define MAX 30 /* 定义一个元素个数为 30 的常量,将来如果元素个数需要增减、或者减少,都可以根据具体需要修改这一处,而程序中其他所有涉及到的 MAX 都自动修改成新的数值,程序的可移植性好。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式