Я пытаюсь сделать граф, который читает txt-файл и помещает слова в график, но он не может повторить (в случае, если два одинаковых слова в файл)Различные текстовые слова в графике (с JUNG lib)
вот мой код (ИСПОЛЬЗОВАНИЕ JUNG API)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;
import edu.uci.ics.jung.graph.DirectedSparseGraph;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.graph.util.EdgeType;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner scan = null;
/*i have a class named 'Palavra' that returns me a string(did that cause // i'll use the class to implement some things at the word) */
Stack<Palavra> palavras = new Stack<Palavra>(); // pilha para delimitar
// tamanho do grafo
// Read txt
try {
scan = new Scanner(new File("C:\\Users\\Auryon.AURYON-PC\\Desktop\\Aula1\\teste.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
/*int i = 0;*/
Graph<Palavra, Relacao> g = new SparseMultigraph<Palavra, Relacao>();
// последний класс, который я создал (будет мое слово проверка отношения)
Relacao tipo_palavra = new Relacao("connect");
# зДЕСЬ ПРОБЛЕМА
while (scan.hasNextLine()) {
String s = scan.next();
Palavra word = new Palavra(s);
if (palavras.contains(word)) {
s = scan.next();
} else {
palavras.push(word);
g.addVertex(word);
}
/*
* if (i > 0) { g.addEdge(tipo_palavra,word,palavras.lastElement());
* //multiple edges }
*/
}
System.out.println(g);
System.out.println(palavras.size());
}
}
MY NEW UPDATE
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
import java.util.Stack;
import edu.uci.ics.jung.graph.DirectedSparseGraph;
import edu.uci.ics.jung.graph.Graph;
import edu.uci.ics.jung.graph.SparseMultigraph;
import edu.uci.ics.jung.graph.util.EdgeType;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Scanner scan = null;
Stack<Palavra> palavras = new Stack<Palavra>(); // Graph Size Stack
// Read txt
try {
scan = new Scanner(new File("C:\\Users\\Auryon.AURYON-PC\\Desktop\\Aula1\\teste.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Graph<Palavra, Relacao> g = new SparseMultigraph<Palavra, Relacao>();
Relacao tipo_palavra = new Relacao("connect");
String s = scan.next();
Palavra word = new Palavra(s);
palavras.push(word);
g.addVertex(word);
while (scan.hasNextLine()) {
s = scan.next();
word = new Palavra(s);
//THE REAL PROBLEM
g.addVertex(word);
g.addEdge(tipo_palavra, word, palavras.lastElement());
palavras.push(word);
}
System.out.println(g);
System.out.println(palavras.size());
}
}
Что вы имеете в виду «но он не может повторить (в том случае, имея двух одинаковых слов в файле)»? Вы имеете в виду, что вы не можете иметь те же два слова на графике, что означает, что каждое слово в графе уникально? – DivDiff
ну, я просто пытаюсь сделать граф, который соединяет слова thoose с txt-файлом, но я принимал проблемы с добавлением ребра, потому что появляется сообщение о том, что я не могу повторить одни и те же граничные конечные точки, поэтому я подумал, что должен фильтровать мои вершины графа, я сделал себя достаточно ясно? – Aury0n
Я только что опубликовал обновление на пост, (я не знаю, сделал ли я это, используя лучшие методы StackOverflows, но, есть), теперь я работаю в проекте и рад, если вы могли бы помочь ... я опубликую обновления – Aury0n