So Erstellen Sie Eine Java-Grafik-Datei aus .txt-Datei

Ich versuche ein Diagramm erstellen Datei .Ich lese Werte aus einer .gra-Datei(was ich denke ist ein .txt-Datei).Uns wurde gesagt, zu tokenise Linien basieren auf einem Feld im format <vertex> <name> <x-coord> <y-coord>,das gleiche gilt für edge

Ich hatte einen Blick auf ein paar der Fragen,aber kann immer noch nicht die Antwort zu finden.

Hier ist der code, den ich bekam:

        public EdgeListVertex(V element) {
            this.element = element;
        }

        @Override
        public V element() {
            return element;
        }

        public String toString() {
            return element.toString();
        }
    }

    private class EdgeListEdge implements Edge<E> {
        Position<EdgeListEdge> position;
        E element;
        EdgeListVertex start, end;


        public EdgeListEdge(EdgeListVertex start, EdgeListVertex end, E element) {
            this.start = start;
            this.end = end;
            this.element = element;
        }

        @Override
        public E element() {
            return element;
        }

        public String toString() {
            return element.toString();
        }
    }

    private List<EdgeListVertex> vertices;
    private List<EdgeListEdge> edges;


    public EdgeListGraph() {
        vertices = new LinkedList<EdgeListVertex>();
        edges = new LinkedList<EdgeListEdge>();

    }

    @SuppressWarnings("unchecked")
    @Override
    public Vertex<V>[] endVertices(Edge<E> e) {
        EdgeListEdge edge = (EdgeListEdge) e;
        Vertex<V>[] endpoints = (Vertex<V>[]) new Vertex[2];
        endpoints[0] = edge.start;
        endpoints[1] = edge.end;
        return endpoints;
    }

    @Override
    public Vertex<V> opposite(Vertex<V> v, Edge<E> e) {
        Vertex<V>[] endpoints = endVertices(e);
        if (endpoints[0].equals(v)) {
            return endpoints[1];
        } else if (endpoints[1].equals(v)) {
            return endpoints[0];
        }
        throw new InvalidVertexException();
    }

    @Override
    public boolean areAdjacent(Vertex<V> v, Vertex<V> w) {
        for (EdgeListEdge edge: edges) {
            if ((edge.start.equals(v)) && (edge.end.equals(w))) return true;
            if ((edge.end.equals(v)) && (edge.start.equals(w))) return true;
        }
        return false;
    }

    @Override
    public V replace(Vertex<V> v, V x) {
        EdgeListVertex vertex = (EdgeListVertex) v;
        V temp = vertex.element;
        vertex.element = x;
        return temp;
    }

    @Override
    public E replace(Edge<E> e, E x) {
        EdgeListEdge edge = (EdgeListEdge) e;
        E temp = edge.element;
        edge.element = x;
        return temp;
    }

    @Override
    public Vertex<V> insertVertex(V v) {
        EdgeListVertex vertex = new EdgeListVertex(v);
        Position<EdgeListVertex> position = vertices.insertLast(vertex);
        vertex.position = position;
        return vertex;
    }

    @Override
    public Edge<E> insertEdge(Vertex<V> v, Vertex<V> w, E o) {
        EdgeListEdge edge = new EdgeListEdge((EdgeListVertex) v, (EdgeListVertex) w, o);
        Position<EdgeListEdge> position = edges.insertLast(edge);
        edge.position = position;
        return edge;
    }

    @Override
    public V removeVertex(Vertex<V> v) {
        Iterator<Edge<E>> it = incidentEdges(v).iterator();
        while (it.hasNext()) it.remove();

        EdgeListVertex vertex = (EdgeListVertex) v;
        vertices.remove(vertex.position);
        return vertex.element;
    }

    @Override
    public E removeEdge(Edge<E> e) {
        EdgeListEdge edge = (EdgeListEdge) e;
        edges.remove(edge.position);
        return edge.element;
    }

    @Override
    public List<Edge<E>> incidentEdges(Vertex<V> v) {
        LinkedList<Edge<E>> list = new LinkedList<Edge<E>>();

        for (EdgeListEdge edge : edges) {
            if (edge.start.equals(v)) list.insertLast(edge);
            if (edge.end.equals(v)) list.insertLast(edge);
        }

        return list;
    }

    @Override
    public List<Vertex<V>> vertices() {
        LinkedList<Vertex<V>> list = new LinkedList<Vertex<V>>();
        for (EdgeListVertex vertex : vertices) {
            list.insertLast(vertex);
        }
        return list;
    }

    @Override
    public List<Edge<E>> edges() {
        LinkedList<Edge<E>> list = new LinkedList<Edge<E>>();
        for (EdgeListEdge edge : edges) {
            list.insertLast(edge);
        }
        return list;
    }

}

Irgendwelche Tipps?

  • Was ist deine konkrete Frage?
  • ooks wie Ihr code-snippet abgeschnitten wurde, an der Spitze. Wenn Hausaufgaben, nutzen Sie bitte die "Hausaufgaben" - tag. Vermutlich haben Sie Fragen über die I/O beteiligt, aber Sie müssen, um zu zeigen, was Sie als erste ausprobiert.
  • Ok.Meine konkrete Frage ist wie ich anfangen soll,oder das Konzept zur Erstellung des Graphen.Ich denke, um mit einem scanner-Objekt,dann verwenden Sie etwas wie BufferedReader-Objekt(bin mir nicht sicher ob es so in der JAVA API),dann mit readLine().Nachdem Sie das tun,wandeln Sie den gelesenen Wert in das element des EdgeListEdge Objekt(oder EdgeListVertex Objekt).Ich bin nicht sehr gut in Java-Syntax aber,und woould schätzen jeden Hinweis,tips..@bkail ich bin nicht sicher, was I/O ist und welche code-snippet abgeschnitten wurde(die syntax für vertex-Schöpfung oder der Anfang der Klasse)
InformationsquelleAutor DigiExpert | 2011-04-22
Schreibe einen Kommentar