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 :

Return - valeur impossible


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut Return - valeur impossible
    Bonsoir !

    je suis entrain de développer un petit applet java et pour la première fois depuis mes débuts, je rencontre un problème qui est vraiment ... bizarre 0o

    j'explique, j'ai une méthode qui renvoi un boolean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public boolean isMagnetic( Piece pieceFrom ) {
    		if( blabla ) {
    			if( blabla2 ) { // je ne met pas les 2 conditions ensemble pour une extension future...
                                    // instructions
    				if( blabla3 ) {
    					System.out.println("TRUE");
    					return true;
    				}
    			}
    		}
    		System.out.println("FALSE");
    		return false;
    	}
    et là, j'ai dans le log un "FALSE" mais quand je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("isMagnetic retourne "+ machin.isMagnetic(this));
    j'obtiens un beau "true" Oo

    Avouez que c'est incompréhensible ?!?

    si vous avez des suggestions je suis preneur...

    merci

  2. #2
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    C'est d'avoir "true" en minuscules ton probleme ???

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    hihi non ^^

    c'est que dans le log j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FALSE
    isMagnetic retourne true
    Ce qui est impossible, puisque que si "FALSE" s'affiche, alors "return false;" devrait être appelé, et la méthode retournerait alors false et non pas true !

    Et si on prend le problème dans l'autre sens, si la méthode a retourné true, alors il est impossible que l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("FALSE");
    soit executée !

  4. #4
    Membre chevronné Avatar de Bezout
    Profil pro
    Développement
    Inscrit en
    Septembre 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Développement

    Informations forums :
    Inscription : Septembre 2003
    Messages : 234
    Par défaut
    ah OK

    Effectivement c'est bizarre.



    Donne plus d'infos peut etre. Source d'origine, logs, ...

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 20
    Par défaut
    Merci pour ta réponse

    ben le code source est grand ^^ donc je vais pas pouvoir vous le donner

    je peux essayer d'élargir un peu, mais ça devient plus le bordel ^^, ici la méthode isMagnetic renvoi un int, c'était juste pour voir si ça change quelque chose... mais non c'est toujours faux.

    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
    public void moveFromMouse( int mouseX, int mouseY ) {
    		double oldX = getX();
    		double oldY = getY();
    		double deltaX;
    		double deltaY;
    
    		setPosition( mouseX, mouseY );
    	
    		boolean magnet = false;
    		if( motor == null ) {
    			ArrayList<Piece> pieceMagnet = new ArrayList<Piece>(1);
    			for( int i = 0; i < Engrenage.getAllPiece().size(); i++ ) {
    				if( Engrenage.getAllPiece().get(i).isMagnetic(this) == 1 )
    				{
    					System.out.println("isMagnetic est = "+ Engrenage.getAllPiece().get(i).isMagnetic(this));
    					pieceMagnet.add( Engrenage.getAllPiece().get(i) );
    				}
    			}
    			
    			if( pieceMagnet.size() > 0 ) {
    				pieceMagnet.get(0).magnetization(this);
    				
    				deltaX = getX() - oldX;
    				deltaY = getY() - oldY;
    				if( linkedAxis.linkedGear.size() == 1 ) {
    					linkedAxis.moveFromGear( deltaX, deltaY, this );
    				}
    				else // This se détache de son axe !
    					linkedAxis.removeLinkedGear(this);
    				for(int j = 0; j < linkedGear.size(); j++) {
    					linkedGear.get(j).moveFromGear( deltaX, deltaY );
    				}
    				magnet = true;
    			}
    		}
    
    		if( !magnet ) {
    			System.out.println("!magnet de "+ this);
    			deltaX = getX() - oldX;
    			deltaY = getY() - oldY;
    			if ( linkedGearUp != null ) {
    				linkedGearUp.removeLinkedGear(this);
    				linkedGearUp = null;
    			}
    			if( linkedAxis.linkedGear.size() == 1 ) {
    				linkedAxis.moveFromGear( deltaX, deltaY, this );
    			}
    			else
    				linkedAxis.removeLinkedGear(this);
    			for(int i = 0; i < linkedGear.size(); i++) {
    				linkedGear.get(i).moveFromGear( deltaX, deltaY );
    			}
    		}
    
    	}
    	
    	public int isMagnetic( Piece pieceFrom ) {
    		System.out.println("isMagnetic de "+ this);
    		if( magnetic ) {
    			if( pieceFrom instanceof Gear ) {
    				Gear gear = (Gear) pieceFrom;
    				boolean ok = true;
    				Gear tempGearUp = this;
    				if( tempGearUp == gear ) // VRAIMENT UTILE ??
    					ok = false;
    				while( tempGearUp.linkedGearUp != null ) {
    					tempGearUp = tempGearUp.linkedGearUp;
    					if( tempGearUp == gear )
    						ok = false;
    				}
    				
    				double delta = Math.sqrt(Math.pow(getX()-gear.getX(), 2) + Math.pow(getY()-gear.getY(), 2)) - pitchC-gear.pitchC;
    				System.out.println("Delta entre "+ this+" et "+gear+" = "+delta);
    				if( ok && delta < 40 && delta > -40 ) {
    					System.out.println("TRUE");
    					return 1;
    				}
    			}
    		}
    		System.out.println("FALSE");
    		return 0;
    	}
    	
    	public void magnetization( Piece pieceFrom ) {
    		System.out.println("magnetization de "+ this+" et de "+ pieceFrom);
    		if( pieceFrom instanceof Gear ) {
    			Gear gear = (Gear) pieceFrom;
    			if( gear.linkedGearUp != null )
    				gear.linkedGearUp.removeLinkedGear(gear);
    			gear.linkedGearUp = this;
    			this.setLinkedGear(gear);
    			double dist = Math.sqrt(Math.pow(getX()-gear.getX(), 2) + Math.pow(getY()-gear.getY(), 2));
    			int x = (int) (getX()+( (gear.getX()-getX()) * (pitchC + gear.pitchC) / dist) );
    			int y = (int) (getY()+( (gear.getY()-getY()) * (pitchC + gear.pitchC) / dist) );
    			gear.setPosition(x, y);
    			gear.meshing();
    		}
    	}
    ,tout cela dans la classe Gear.

    Ce bout de code est là pour déplacer un engrenage avec la souris. Avant tout marchait quand les méthodes isMagnetic() et magnetization() étaient "dans" la méthode moveFromMouse(), mais j'ai du changer ça pour pouvoir être plus souple, et car je vais devoir rajouter plusieurs autres pièces en plus que les engrenages.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Par défaut
    ton problème est étrange donc pour le comprendre j'ai deux questions:
    * Est-ce que ton programe utilise des threads.
    * Est-ce que tu as une exception non catchée ou alors un exception catchée que tu ignores ?

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

Discussions similaires

  1. [SQL2005EXP] La fonction AVG me renvoit des valeurs impossibles
    Par gbouchat dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/02/2010, 19h44
  2. Modification valeur impossible class template
    Par Nykoo dans le forum Langage
    Réponses: 9
    Dernier message: 11/01/2008, 16h17
  3. Réponses: 2
    Dernier message: 18/12/2006, 00h37
  4. Lecture valeurs CSS impossible :s
    Par balti dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/09/2005, 21h32
  5. impossible de changer la valeur d'un hidden...
    Par Palmic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/05/2005, 12h06

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