Проблема в том, что вы добавляете вершины к графику ДО вы проверяете необходимость их добавления.Во-первых, вместо непосредственного добавления обеих вершин, просто прочитайте их:
v1 = new ElementoDecorado<Integer>( fr.nextInt() );
v2 = new ElementoDecorado<Integer>( fr.nextInt() );
Затем в for
вы проверяете, существует ли вершина, так же, как вы пытались.Ваши if
могут выглядеть так:
if( !v1_exists && v.equals( v1 ) ) {
v1 = v;
v1_exists = true;
}
И аналогично для v2
.В конце, если и только если v1_exists
ложно, вы добавляете вершину:
// right anfter the for-each
if ( !v1_exists ) {
g.addVertex( v1 );
}
if ( !v1_exists ) {
g.addVertex( v2 );
}
g.insertEdge( v1, v2, "edge" );
// etc
Есть несколько оптимизаций, которые вы также можете сделать, например, остановка for
, когда найдены обе вершины, но это должно сработать.
Обратите внимание, что это может быть лучшим способом сделать это, но я не знаю этих классов.