首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >索引越界?

索引越界?
EN

Stack Overflow用户
提问于 2018-06-04 04:16:27
回答 2查看 207关注 0票数 0
代码语言:javascript
复制
 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的列表,数字是边的平面数组

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-04 04:22:05

在这行中:

代码语言:javascript
复制
a.connected[i] = vertices[i+1];

您将该索引称为i+1。这将产生一个index out of bounds exception。(在您的示例中,当n等于19时:有效索引将为0-18。你的循环将从0到18。但在行中,它会向其添加一个。18+1 = 19,这是一个无效的索引)在您的循环中将条件更改为:

代码语言:javascript
复制
for (int i = 0; i<n-1; i+=2){

以确保在添加一个时不会超出范围。

票数 0
EN

Stack Overflow用户

发布于 2018-06-04 04:25:06

数组的长度为n=19,表示索引为0-18,i递增2。

所以当i=18时,

代码语言:javascript
复制
 a.connected[i] = vertices[i+1];

尝试访问不存在的vertices19。因此就有了ArrayOutOfBoundException。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50670594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档