Foros del Web » Programación para mayores de 30 ;) » Java »

Iteradores, Advertencias Xlint, Casteo, y muchas cosas mas

Estas en el tema de Iteradores, Advertencias Xlint, Casteo, y muchas cosas mas en el foro de Java en Foros del Web. Hola a todos, primera vez que programo en Java y bueno... se imaginan ya tuve sorpresas con las confusion de tipos primitivos y objetos, pero ...
  #1 (permalink)  
Antiguo 01/06/2010, 02:08
 
Fecha de Ingreso: diciembre-2003
Ubicación: San Pedro Sula
Mensajes: 165
Antigüedad: 21 años
Puntos: 0
Iteradores, Advertencias Xlint, Casteo, y muchas cosas mas

Hola a todos, primera vez que programo en Java y bueno... se imaginan
ya tuve sorpresas con las confusion de tipos primitivos y objetos, pero bueno.

Estoy trabajando con el GraphBench (aplicacion educativa para simular grafos)
Ya no tengo errores, solo "Notas" supongo advertencias sobre -Xlint y unsafe operations. Busque en la red, hablan del uso de generalidades(ciones?) y he tratado de corregir mi codigo pero la aplicación no me funciona.

Tengo duda con los iteradores, y si estoy enviando bien los params en el metodo putUserData. Debo resolver esto usando el API de este software educativo.

Código:
import ch.ethz.graphbench.toolbox.*;
import java.util.Iterator;
import java.lang.String;
import javax.swing.*;

public class Grado_separacion extends GraphAlgorithm{

  public void executeAlgorithm(){   // codigo que ejecuta el software

        String origen = "0"; 
        String destino = "5";
        boolean encontrado = false;
        Iterator<Edge> it;                  // POR AQUI ANDA EL ASUNTO
        Edge edg = null;
        Integer gradosep = new Integer(0);
        Integer respuesta = new Integer(0);      
        int indiceOrigen=0;
        
        if ( !origen.equals(destino) )   // por ahi me dijeron que no era con == ...
        {            
            for(int i = 0; i < graph.getVertexCount(); i++)     {
                  if ( graph.getVertex(i).getName().equals(origen) ); {
                       graph.getVertex(i).setVertexState(Vertex.ACTIVE_STATE);
                       graph.getVertex(i).putUserData("grado", new Integer(0));
                       indiceOrigen=graph.getVertex(i).getIndex();
                       graph.getVertex(i).setVertexState(Vertex.QUEUED_STATE); 
                  }  
            }
            for(int i = indiceOrigen; i < graph.getVertexCount(); i++)     {
                 if ( graph.getVertex(i).getVertexState() ==  Vertex.QUEUED_STATE )                   
                 {
                      graph.getVertex(i).setVertexState(Vertex.PROCESSED_STATE); 
                      // visitado                    

                      // CODIGO DUDOSO
                      // iterador a las aristas adyacentes al vertice
                      it = graph.getVertex(i).getEdgeIterator();
                      
                      gradosep=(Integer)graph.getVertex(i).getUserData("grado"); 
                      while (it.hasNext())                       
                      {
                          edg = (Edge) it.next();   // CODIGO DUDOSO
                          edg.getEndVertex().setVertexState(Vertex.QUEUED_STATE); 
                          edg.getEndVertex().putUserData("grado",
                                                         new Integer(gradosep.intValue()+1));
                         
                          if ( edg.getEndVertex().getName() == destino )   
                          {                                                                  
                               encontrado = true;
                               edg.getEndVertex().setVertexState(Vertex.PROCESSED_STATE);
                               respuesta = (Integer) edg.getEndVertex().getUserData("grado");
                               break; 
                           }                           
                      }                  
                 } 
                 
                 if (encontrado) break;
            } 
        }

   } 
   JOptionPane.showMessageDialog(null,Integer.toString(respuesta),"Error",JOptionPane.INFORMATION_MESSAGE); 
}

API JAVA


de la clase vertex:
public java.util.Iterator getEdgeIterator()
Retorna un iterador a todas las aristas adyacentes al vertice.

public void putUserData(java.lang.Object key, java.lang.Object value)
Mapea Value al objeto Key.

Solo esto incluyo porque con he probado separadamente los demás metodos y me funcionan bien. Sin embargo, el API completo esta aqui


Gracias por sus observaciones.
__________________
J. Alberto Montoya
------------------
  #2 (permalink)  
Antiguo 01/06/2010, 13:06
 
Fecha de Ingreso: diciembre-2003
Ubicación: San Pedro Sula
Mensajes: 165
Antigüedad: 21 años
Puntos: 0
Respuesta: Iteradores, Advertencias Xlint, Casteo, y muchas cosas mas

RESUELTO
Bueno bueno, descancé un poco... a veces se necesita para visualizar mejor la nube.

Los errores de casteo se debe a que declaro: Iterator<Edge> it;
luego se lo asigno al resultado del metodo: public java.util.Iterator getEdgeIterator()

Solo deje Iterator it;
Con eso se terminaron mis problemas con -Xlint.

Aun no me funciona bien el programa pero... ahi vamos descubriendo errores ya relacionados con el uso del API. BYE.
__________________
J. Alberto Montoya
------------------

Etiquetas: grado, graphbench, iteradores, separacion, xlint, graficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:48.