Bonjour les gens !
Je suis en train de faire un petit projet en java (un programme de parcours de graphe, en gros on donne un noeud de départ un chemin a suivre et ça doit nous sortir les noeuds d'arrivées.) .
Mais je me suis dit on va faire une petite interface pour rendre le tout plus joli et éviter de taper dans la console les diverses informations que le programme demande .
Bref le problème, c'est qu'avec l'interface ça ne marche pas, et sans interface que je code tout en dur dans le main, ça marche .
Ici c'est dans le main, p est donc de type parcours et j'apelle la méthode rechercher avec un noeud de départ (n1) et un vector de string (v1) qui désigne le chemin a suivre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Parcours p = new Parcours(v1); v2 = p.rechercher(n1, v1); System.out.println(v2.isEmpty()); System.out.println(v2.size()); for (int m = 0; m < v2.size();m++){ System.out.println(v2.elementAt(m).getId()); }
Apres j'affiche les noeuds qui correspondent aux arrivées et je trouve ce qu'il faut.
Ici c'est la méthode ActionPerformed qui est apellé quand je lance la recherche a partir de mon interface, le plus étrange étant que je récupère dans 2 champs de texte le nom du noeud et le trajet, ben je récupère le bon noeud et le bon trajet (j'ai vérifié) mais rien a faire quand je lance la méthode rechercher(Noeud n, Vector<String> trajet) de ma classe Parcours ici, ça me retourne toujours un vecteur résultat vide, alors que quand je le fais dans le main sans interface, ça marche, je suis désespéré, je ne comprend pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public void actionPerformed(ActionEvent arg0) { String aux1 = null; String aux2 = null; Vector<String> aux3 = new Vector<String>(); Noeud n1 = null; aux1 = this.instanceGui.noeudSourceTexte.getText(); aux2 = this.instanceGui.trajetTexte.getText(); for (int i = 0 ; i < aux2.length(); i ++){ aux3.add(aux2.substring(i,i+1)); } Parcours p = new Parcours(aux3); this.instanceParcours = p; n1 = this.instanceGraphe.getNoeud(aux1); System.out.println(n1.getId()); this.instanceParcours.rechercher(n1, aux3); this.instanceGui.resultat.setText("BOUH"); }
Je vous met aussi le code de ma méthode rechercher de la classe Parcours même si je doute qu'elle y soit pour quelque chose étant donné que sans interface elle retourne le bon vecteur résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public Vector<Noeud> rechercher(Noeud n, Vector<String> v){ Vector<Noeud> v2 = new Vector<Noeud>(); Vector<Noeud> v3 = new Vector<Noeud>(); Vector<Noeud> aux = new Vector<Noeud>(); Vector<Noeud> v4 = new Vector<Noeud>(); v2 = chercher(n, v.elementAt(0)); // Ici normalement v2 doit déja contenir un noeud aprés apel de // la méthode chercher, mais en passant par l'interface il ne contient // rien System.out.println(v2.isEmpty()); System.out.println(v2.elementAt(0).getId()); System.out.println("TAILLE DU CHEMIN : " + v.size()); for (int j = 1; j < v.size() ; j ++){ for (int k = 0; k < v2.size(); k ++ ){ aux = chercher(v2.elementAt(k),v.elementAt(j)); v3.addAll(aux); v4 = this.supp(v3); // supp : méthode qui élimine les doublons } v2.removeAllElements(); v2.addAll(v4); v4.removeAllElements(); aux.removeAllElements(); v3.removeAllElements(); } return v2; }
Voila désolé si c'est un peu long, mais je suis au bord du crakage total
Merci .
Partager