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

Langage Java Discussion :

Problème de boucle infini


Sujet :

Langage Java

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Problème de boucle infini
    Bonsoir,

    j'ai bloqué toute la journée sur une boucle infini que je n'arrive pas à debug...peut-être aurez-vous plus de chance que moi avec un oeil extérieur au problème, là je commence à voir des petits camions partout


    Pour résumer le problème, j'ai 4 classes.

    Reader qui me sert à lire un fichier et initialiser une ArrayList<Client> pendant la lecture
    Client
    Camion
    Strategie

    Les camions livrent les clients et la classe stratégie me sert à implémenter le tout.

    Voici à quoi ressemble mon fichier à lire

    Cap 1000
    Id X Y Quant. Tmin Tmax Dur.
    1 40.00 50.00 0.00 0.00 960.00 0.00
    2 25.00 85.00 20.00 673.00 793.00 10.00
    3 22.00 75.00 30.00 152.00 272.00 10.00
    4 22.00 85.00 10.00 471.00 591.00 10.00
    Je récupère ces infos pour construire des clients (les 3 premières lignes étant spéciales, on ne s'occupe que de la liste à partir de id=2). Bref pas de soucis là dessus. Je récupère bien mes données, c'était surtout pour l'intro.


    La méthode dans laquelle je boucle sans fin est en fait une fonction de verif de la classe Camion.

    Notez que les "heures" sont simplifiées par un calcul de float, donc à priori pas de soucis là dessus.
    On regarde si l'heure d'arrivée du camion est inférieur à l'heure maximum de début de livraison d'un client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //Cas sans contrainte temps de livraison et capacite
    	public boolean verifValiditeLivraison(Client c){
    		float xC=c.x1;
    		float yC=c.x2;
    		float dateMax=c.timeMax;
    		//heure arrivée inférieure à h livraison max
    		return ((this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC))<dateMax);
    	}



    Et la méthode exécutant le traitement principal est ici dans ma classe stratégie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class Strategie {
    	public static int capa;
    	public ArrayList<Client> listeClients;
    	public ArrayList<Camion> listeCamions;
    	public String pathFile; 
    	public int nbCamions;
    	public Client lineDep; //client spécial représentant le dépot
    En rouge la partie de génération avec une valeur aléatoire et le test de validité
    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
    public void strategieAleatoire(){
    		int nbCam=1;
    		while(!this.allClientsVisited()){
    			//tant que tous les clients ne sont pas livrés
    			//tant que le camion n'est pas de retour au dépot
    			Camion c_k=this.listeCamions.get(nbCam-1);
    			System.out.println("Camion "+(nbCam-1)+" livre ");
    			while(!c_k.backToDepot){
    				if(nbCam>=this.nbCamions){
    					//On utilise un nouveau camion
    					Camion c_new=new Camion(Strategie.capa,lineDep.x1,lineDep.x2,lineDep.timeMax);
    					this.nbCamions++;
    					listeCamions.add(c_new);
    				}
    				int numClient;
    				Client cTemp;
    				do{
    					numClient=0;
    					if(listeClients.size()>0){
    						numClient=aleat(listeClients.size()-1);
    					}
    					
    					
    					cTemp=listeClients.get(numClient);
    				}while(!c_k.verifValiditeLivraison(cTemp));
    				if(c_k.canToGoBackAfterLivraison(cTemp)){
    					//on effectue la livraison si on a le temps de back depot
    					c_k.effectuerLivraison(cTemp);
    					listeClients.remove(numClient);
    					//listeClients.get(numClient).visited=true;
    					System.out.println(" Client "+cTemp.ident+" puis ");
    				}else{
    					//on rentre au dépot
    					System.out.println(" rentre au dépot \n\n");
    					c_k.effectuerLivraison(lineDep);
    				}
    			}
    			nbCam++;
    			System.out.println("*******\n");
    			
    		}
    	}
    Ma fonction aleat au cas ou même si je ne vois pas le problème venir de là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static int aleat(int n){
    		Random rand = new Random();
    	    int i = rand.nextInt(n+1);
    	    return i;
    	}

    A l'exécution, j'ai bien mes valeurs aléatoire, mais il semblerait que je boucle indéfiniment sur le dernier client possible d'un Camion, sans raison apparente.

    Voici une trace d'exe
    Camion 0 livre
    Client 93 puis
    Client 27 puis
    Client 37 puis
    Client 101 puis
    Client 4 puis
    Client 56 puis
    Client 80 puis
    Client 90 puis
    Client 81 puis
    Client 82 puis
    Client 69 puis
    Client 97 puis
    Client 35 puis
    Client 33 puis
    Client 2 puis
    Client 25 puis
    Client 78 puis
    Client 71 puis
    Client 94 puis
    Et ici on entre dans la boucle infini du test
    Dans la 1ère ligne du fichier texte 960 représente l'heure max de retour de mes camions.

    Hors si j'affiche les clients testés par ma fonction de verif validité pendant la boucle infini je trouve bien certaines valeurs qui devraient me permettre de sortir de la boucle !

    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    do{
        numClient=0;
        if(listeClients.size()>0){
            numClient=aleat(listeClients.size()-1);
        }
        cTemp=listeClients.get(numClient);
    }while(!c_k.verifValiditeLivraison(cTemp));
    Première chose : si la liste de clients est vide, plantage (listeClients.get(0) causera une IndexOutOfBoundException).
    Sinon il faut s'interresser à la condition : si la boucle est infinie c'est que la méthode retourne toujours false.

    Donc le résultat de cette méthode est toujours false (la distance n'est jamais inférieur à la date (écrit comme ça déjà moi ça me semble bizarre de comparer une distance et une date...)). Commence déjà par afficher les valeurs dans un System.out.println() pour constater les valeurs (de dateMax, hCurrent, et du calcul distance_euclidienne() ).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public boolean verifValiditeLivraison(Client c){
    		float xC=c.x1;
    		float yC=c.x2;
    		float dateMax=c.timeMax;
    		//heure arrivée inférieure à h livraison max
    		return ((this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC))<dateMax);
    	}
    Ces valeurs te semble-t-elles justes (correspondrent à ce qu'elles devraient) ? Varient-elles ou pas ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Elle ne retourne pas toujours false puisque certains cas passent comme le montre la trace.

    Par contre je me rends compte que j'ai un format bizarre sur ma valeur dateMax avec deux points dans le nombre.

    Sa doit venir de ma fonction de distance_euclidienne (qui en fait pour simplifier est assimilé au temps. La distance euclidienne entre deux points est ici égale au temps de parcours entre les deux points.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static float distance_euclidienne(float x0,float y0,float x1,float y1){
    		float res=(float)Math.sqrt((pow2(x0-x1)+pow2(y0-y1)));
    		return res;
    	}
    Je pensais qu'il y avait une méthode pour faire le carré mais je l'ai pas trouvé...donc j'en ai fais une à la main.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static float pow2(float x1){
    		return x1*x1;
    	}
    Dans tous les cas, je me rends compte que ça marche, simplement je semble toujours taper sur des nombres qui ne conviennent plus au bout d'un certain moment.

    Au début ça marche bien le coté aléatoire
    Camion 0 livre
    Heure client 100: 428.0
    Heure arrivée théorique camion: 0.020.518284

    Client 100 puis
    Heure client 58: 517.0
    Heure arrivée théorique camion: 30.51828410.770329

    Client 58 puis
    Mais à la fin, il me reste presque que des client dont les heures sont inférieure à celle du camion, ce qui explique la boucle infini.

    Heure client 52: 446.0
    Heure arrivée théorique camion: 466.6080622.803509
    Heure client 22: 335.0
    Heure arrivée théorique camion: 466.6080638.078865
    Heure client 84: 225.0
    Heure arrivée théorique camion: 466.6080616.27882
    Heure client 10: 491.0
    Heure arrivée théorique camion: 466.6080639.623226
    Heure client 19: 455.0
    Heure arrivée théorique camion: 466.6080637.336308
    Heure client 24: 321.0
    Heure arrivée théorique camion: 466.6080638.600517
    Heure client 62: 378.0
    Heure arrivée théorique camion: 466.6080623.345236
    Heure client 15: 155.0
    Heure arrivée théorique camion: 466.6080644.102154
    Du coup, peux être qu'il serait mieux de mettre une limite au nombre d'itération si l'on ne trouve pas de livraison compatible dans la liste. Enfin bref, j'ai vu l'erreur maintenant ce n'est pas niveau code, c'est niveau conceptuel, on m'a demandé une solution totalement aléatoire, mais elle est en réalité impossible à mettre réellement en place parce que dans la pratique quand on approche de la fin on n tire plus que des numéros qui ne conviennent plus !




    Par contre, j'aimerais bien comprendre pourquoi j'ai un format comme ça sur mes float. Première fois que je vois ces deux virgules dans un même nombre...


    Merci pour ton aide en tout cas, j'étais trop focalisé sur une erreur dans le code lui-même...

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Elle ne retourne pas toujours false puisque certains cas passent comme le montre la trace.
    Non, mais je parlais bien sûr, du cas où la boucle est infinie ! Le cas où la boucle fonctionne, on s'en balance !

    Citation Envoyé par Amnael Voir le message
    Par contre je me rends compte que j'ai un format bizarre sur ma valeur dateMax avec deux points dans le nombre.
    Euh, quoi ? Tu l'affiches comment ? Tu peux me montrer le code qui déclare et initialise timeMax dans la classe Client ? Et le code qui changerait cette valeur le cas échéant.

    Citation Envoyé par Amnael Voir le message
    Sa doit venir de ma fonction de distance_euclidienne (qui en fait pour simplifier est assimilé au temps. La distance euclidienne entre deux points est ici égale au temps de parcours entre les deux points.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public static float distance_euclidienne(float x0,float y0,float x1,float y1){
    		float res=(float)Math.sqrt((pow2(x0-x1)+pow2(y0-y1)));
    		return res;
    	}
    Je pensais qu'il y avait une méthode pour faire le carré mais je l'ai pas trouvé...donc j'en ai fais une à la main.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static float pow2(float x1){
    		return x1*x1;
    	}
    [/quote]
    Il y'a une méthode pour calculer la puissance, Math.pow(x,y), soit Math.pow(x,2) pour le carré, mais autant faire la multiplication.
    Sinon il y a aussi java.awt.Point.distance(x1,y1,x2,y2) mais c'est un peu dommade d'imposer une dépendance sur l'API AWT rien que pour ça. A la limite tu peux reprendre le code :
    [code] public static float distance(float x1, float y1,
    float x2, float y2)
    {
    x1 -= x2;
    y1 -= y2;
    return (float)Math.sqrt(x1 * x1 + y1 * y1);
    }[/code

    Citation Envoyé par Amnael Voir le message
    Dans tous les cas, je me rends compte que ça marche, simplement je semble toujours taper sur des nombres qui ne conviennent plus au bout d'un certain moment.

    Au début ça marche bien le coté aléatoire


    Mais à la fin, il me reste presque que des client dont les heures sont inférieure à celle du camion, ce qui explique la boucle infini.



    Du coup, peux être qu'il serait mieux de mettre une limite au nombre d'itération si l'on ne trouve pas de livraison compatible dans la liste. Enfin bref, j'ai vu l'erreur maintenant ce n'est pas niveau code, c'est niveau conceptuel, on m'a demandé une solution totalement aléatoire, mais elle est en réalité impossible à mettre réellement en place parce que dans la pratique quand on approche de la fin on n tire plus que des numéros qui ne conviennent plus !
    Probable : si les données font que des clients ne sont pas livrables, il faut inclure cette condition dans la condition d'arrêt.
    En revanche, je ne suis pas sûr de capter la logique qu'un client dont l'heure est inférieur à celle du camion n'est pas livrable, mais peut-être n'ai-je pas compris ce qu'était ce "heure" dont tu parles.





    Par contre, j'aimerais bien comprendre pourquoi j'ai un format comme ça sur mes float. Première fois que je vois ces deux virgules dans un même nombre...


    Merci pour ton aide en tout cas, j'étais trop focalisé sur une erreur dans le code lui-même...[/QUOTE]
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    En revanche, je ne suis pas sûr de capter la logique qu'un client dont l'heure est inférieur à celle du camion n'est pas livrable, mais peut-être n'ai-je pas compris ce qu'était ce "heure" dont tu parles.
    Bah simple question de logique en fait,

    Si ton client te dits je veux être livré entre 16h et 17h; mais que ton camion ne peut pas arriver chez le client avant 17h parce qu'il a livré un autre client avant, alors le client n'est pas livrable et un autre camion s'en chargera.


    Désolé je me suis embrouillé, dateMax est lu dans le fichier et n'est pas modifié par la suite, il a d'ailleurs un bon format de float; c'est bien sur l'appel de distance euclidienne que le format change.

    Il existe peut-être une option pour limiter le nombre de chiffres après la virgule du float ? De façon à écarter ce problème.


    Pour reprendre l'exemple

    Heure client 52: 446.0 --> dateMax
    Heure arrivée théorique camion: 466.6080622.803509 --> hCurrent + distance_euclidienne

    hCurrent étant aussi lu dans le fichier, le problème de format ne peut venir que de ma distance.

    Je verrais si je peux changer ça.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Bah simple question de logique en fait,

    Si ton client te dits je veux être livré entre 16h et 17h; mais que ton camion ne peut pas arriver chez le client avant 17h parce qu'il a livré un autre client avant, alors le client n'est pas livrable et un autre camion s'en chargera.
    Ok, je n'avais effectivement pas compris de quoi il s'agissait. C'est effectivement logique comme ça. Des noms de variables plus significatifs ne seraient pas du luxe...

    Citation Envoyé par Amnael Voir le message
    Désolé je me suis embrouillé, dateMax est lu dans le fichier et n'est pas modifié par la suite, il a d'ailleurs un bon format de float; c'est bien sur l'appel de distance euclidienne que le format change.

    Il existe peut-être une option pour limiter le nombre de chiffres après la virgule du float ? De façon à écarter ce problème.


    Pour reprendre l'exemple

    Heure client 52: 446.0 --> dateMax
    Heure arrivée théorique camion: 466.6080622.803509 --> hCurrent + distance_euclidienne

    hCurrent étant aussi lu dans le fichier, le problème de format ne peut venir que de ma distance.

    Je verrais si je peux changer ça.
    Mmm, j'ai l'impression qu'en fait tu n'as pas 2 points dans le float, mais que tu affiches juste 2 floats l'un après l'autre sans séparateurs, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.print( hCurrent );
    System.out.println( distance_euclidienne);
    Sinon, un float est un float, il n'y a pas de notion de nombre de chiffres derrières la virgule, qui est juste une notion d'affichage. On peut formater l'affichage au besoin. On peut également arrondir pour éliminer des chiffres après la virgule (par multiplication par multiple de 10/partie entière/division par le même multiple), mais forcément on perd de la précision.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Ah !

    Sa voudrait dire que quand je fais un print de (this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC)

    En fait il me print d'abord le hCurrent et ensuite la distance !

    J'y avais pas pensé mais c'est effectivement fort probable !

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Ah !

    Sa voudrait dire que quand je fais un print de (this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC)
    Si c'est ton code est System.out.println(this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC)), et que ça t'affiche deux points, alors l'un des deux est une String. Avec 2 floats, ça t'affiche la somme des deux, avec un seul et unique point donc.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(this.hCurrent+distance_euclidienne(this.xCurrent,this.yCurrent,xC,yC))
    C'est bien mon code.

  10. #10
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Et tu n'aurais pas juste avant un System.out.print( floatNumber ) ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [XL-2003] Problème de boucle infinie
    Par SkyCorp dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 17/11/2011, 00h27
  2. Problème de boucle infinie
    Par Yachas dans le forum Général Python
    Réponses: 12
    Dernier message: 28/06/2011, 10h43
  3. Réponses: 6
    Dernier message: 15/11/2010, 09h47
  4. [Débutant]Problème de boucle infini
    Par Keldou dans le forum Octave
    Réponses: 1
    Dernier message: 21/04/2007, 17h20
  5. Problème de boucle infinie...
    Par anne-so dans le forum Langage
    Réponses: 1
    Dernier message: 25/04/2006, 14h10

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