【问题标题】:comparing pairs of vertices in java比较java中的顶点对
【发布时间】:2016-08-14 04:59:00
【问题描述】:

我想遍历给定一组顶点的所有顶点并比较两对之间的距离。假设我的顶点列表如下:

(1,2),(3,4),(5,6),(7,8),(9,10),(11,12)

我想通过以下方式遍历这组顶点:

第一次迭代:

for pair (1,2) and (3,4) I want to compare it with [(5,6),(7,8)],[(7,8),  (9,10)]and[(9,10),(11,12)]

第二次迭代:

for pair (3,4) and (5,6) I want to compare it with [(7,8),(9,10)]and[(9,10),(11,12)]

第三次迭代:

for pair (7,8) and (9,10) I want to compare it with [(9,10),(11,12)]

我将如何在 java 中使用嵌套循环来做到这一点?我想将一组顶点存储在一个数组列表中。我尝试了以下方式,但出现异常:

 for(i=0;i<arraylist.size();i++)
 {
     for(j=i+2;j<arraylist.size();j++
      {
           //x,y,u,v are objects of the vertex class
             x=arraylist.get(i);
             y=arraylist.get(i+1);
             u=arraylist.get(j);
             v=arraylist.get(j+1);

       }
  }

我需要在上面的代码片段中做哪些额外的改变来遍历我上面解释的顶点集?

【问题讨论】:

  • 你得到的例外是?或者这是一个错误,因为您的第二个 for 循环缺少尾括号?
  • 线程“主”java.lang.IndexOutOfBoundsException 中的异常:索引:20,大小:20 在 java.util.ArrayList.rangeCheck(ArrayList.java:635) 在 java.util.ArrayList.get (ArrayList.java:411) @ Jonny Henly

标签: java arrays arraylist graph


【解决方案1】:

你得到一个IndexOutOfBoundsException 异常,因为你尝试去get() 索引不在列表中的项目(见Arraylist.get()

 j<arraylist.size()

 v=arraylist.get(j+1);  <- (j+1) can become arraylist.size().

所以你应该限制你的循环:

  j<arraylist.size()-1

【讨论】:

  • 那么解决方案是什么?我将如何使用嵌套循环而不会出现异常? @RobAu
  • 见我回答的最后一行。在 for 循环中将 ij 的限制设置为 arraylist.size()-1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多