IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

problème d'assignation avec une ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 8
    Points
    8
    Par défaut problème d'assignation avec une ArrayList
    Bonjour,
    Je suis débutant en java et dans le cadre d'un projet d'algorithmique, on me demande d'effectuer l'algorithme de Prim sur un graphe. J'ai plus ou moins terminé ce qui m'était demandé mais il me reste quelques modifications à effectuer.
    Afin de rentre plus propre et plus dynamique mon programme, je me suis lancé dans le remplacement des vecteurs par des ArrayList.
    Je rencontre des problèmes lors de la compilation.

    voici le code de ma classe principale :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
     
    import java.lang.*;
    import java.util.*;
    import java.io.*;
    public class Itineraire
    {
    	// méthodes et fonctions
    	public static void main (String args[])
    	{
    		Itineraire mst = new Itineraire (args[0], args[1]);
    	}
     
    	public Itineraire (String villages, String chemins )
    	{
    		wt = new int [10];
    	//	mst = new Arc [10];
    	//	edge = new Arc [10];
    		mst = new ArrayList <Arc> ();
    		edge = new ArrayList <Arc> ();
    		g = new Graphe();
    		// initialisation des vecteurs de travail
    		for (int i = 0; i < 10; ++i)
    		{
    		//	mst[i] = null;
    		//	edge[i] = null;
    			mst.get(i) = null;
    			edge.get(i) = null;
    			wt[i] = INT_MAX;
    		}
    		gererNoeuds(villages);
    		gererArcs(chemins);
    		Prim();
    		afficherSolution();
    	}
     
    	void gererNoeuds (String nomDeFichier)
    	{
    		System.out.println (nomDeFichier);
    		Scanner scanner;
     
    		try
    		{
    			scanner=new Scanner(new File(nomDeFichier));
    			// lis le nombre d'arc du graphe
    			String line = scanner.nextLine();
     
    		    // conversion du string en entier
    		    int n;
    		    n = Integer.parseInt(line);
    		 //   g = new Graphe (n);
     
    			// On boucle sur chaque champ detecté pour établir les relations entre les noeuds
    			while (scanner.hasNextLine())
    			{
    				line = scanner.nextLine();
    				String [] res = line.split(" ");
    			    // conversion du string en entier
    			    int c;
    			    c = Integer.parseInt(res[1]);
    				g.ajouterNoeud(c, res[0]);
    			}
    			scanner.close();
    		}
    		catch (java.io.FileNotFoundException e)
    		{
    			System.out.println ("Fichier inexistant");
    		}
    	}
     
    	void gererArcs (String nomDeFichier)
    	{
    		System.out.println (nomDeFichier);
     
    		try
    		{
    			Scanner scanner=new Scanner(new File(nomDeFichier));
     
    			String line = scanner.nextLine();
     
    		    // conversion du string en entier
    		    int n;
    		    n = Integer.parseInt(line);
     
    			// On boucle sur chaque champ detecté
    			while (scanner.hasNextLine())
    			{
    				line = scanner.nextLine();
    				String [] res = line.split(" ");
     
    			    int c;
    			    c = Integer.parseInt(res[2]);
     
    				g.ajouterArc (g.trouverNoeud(res[0]), g.trouverNoeud(res[1]), c);
    			}
    			scanner.close();
    		}
    		catch (java.io.FileNotFoundException e)
    		{
    			System.out.println ("Fichier inexistant");
    		}
    	}
     
    	public void Prim ()
    	{
    		int min = 1;
     
    		for (int v = 0; min != 0; v=min)
    		{
    			min = 0;
    			for (int w = 1; w < g.nbNoeud(); ++w)
    			{
    			//	if (mst[w] == null)
    				if (mst.get(w) == null)
    				{
    					Arc tmp = g.noeuds(v).existeArcVers(g.noeuds(w)); 
    					if (tmp != null)
    					{
    						if (tmp.poids() < wt[w])
    						{
    							wt[w] = tmp.poids();
    						//	edge[w] = tmp;
    							edge.get(w) = tmp;
    						}
    					}
    					if (wt[w] < wt[min])
    						min = w;
    				}
    			}
    			if (min != 0)
    			{
    			//	mst[min] = edge[min];
    				mst.get(min) = edge.get(min);
    			}
    		}
    	}
     
    	public void afficherSolution ()
    	{
    		System.out.println ("la solution est");
     
    		for (int i = 1; i < 4; ++i)
    		{
    		//	System.out.println(mst[i].fin().capacite() + " " + mst[i].debut().nom() + " " +
    		//		mst[i].fin().nom());
    			System.out.println(mst.get(i).fin().capacite() + " " + mst.get(i).debut().nom() + " " +
    					mst.get(i).fin().nom());
    		}
    	}
     
    	// variables
    	private int wt []; // minimum de chaque sommet par rapport à l'arbre sous-tendant minimal
    //	private Arc edge []; // poiteur vers l'arc liant le sommet de l'arbre vers le sommet i
    //	private Arc mst []; // solution arbre sous-tendant minimal
    	private ArrayList <Arc> edge;
    	private ArrayList <Arc> mst;
    	private Graphe g;
    	private static final int INT_MAX = 2147483647; // = 2e31-1
    }
    j'ai laissé en commentaire la version avec les vecteurs.

    donc lors de la compilation, j'ai ce message qui apparaît =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    javac -g *.java
    Itineraire.java:121: unexpected type
    required: variable
    found   : value
    							edge.get(w) = tmp;
    							        ^
    Itineraire.java:131: unexpected type
    required: variable
    found   : value
    				mst.get(min) = edge.get(min);
    				       ^
    2 errors
    make: *** [all] Error 1
    Visiblement, le fait que je veuille effectuer ces assignations n'est pas permis. Or, j'ai besoin de le faire pour pouvoir effectuer l'algorithme de Prim.

    Pourriez-vous me dire comment je dois procéder pour résoudre ce problème ?

    Merci d'avance



    edit : j'ai fini par trouver, il fallait utiliser la méthode : set(int index, E element)

    désolé du dérangement

  2. #2
    Membre habitué Avatar de Celeborn
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 133
    Points : 156
    Points
    156
    Par défaut
    En java tu n'as pas besoin d'initialiser tes champs comme en c ou en pseudo code, tu aura les valeurs pas default : null, 0, false.

    Attention, mettre les champs en bas de code est assez inattendu, par habitude il est plus facile pour tes lecteurs de les trouver en haut.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de ListView avec une ArrayList d'objets
    Par zouky dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 24/08/2012, 00h40
  2. Problème avec une ArrayList
    Par dutty_pi dans le forum JDBC
    Réponses: 2
    Dernier message: 22/03/2012, 07h37
  3. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56
  4. problème de connexion avec une base firebird
    Par vbcasimir dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/05/2005, 11h40
  5. Problèmes d'accent avec une connexion ODBC et ADO
    Par michael.jacques dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2005, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo