Question

Je suis face à un problème étrange.

if ( c2==c1){
    c3 *= 2 ; 
    System.out.println( c3 ) ; 
    .....
}

Je veux insérer c3 * 2 dans le statment println. Mais

if ( c2==c1){
    System.out.println( c3*2 ) ; 

me donne un résultat différent.

Voici le code complet:

        public static void main(String [] args) {

           int c1 = Integer.parseInt(args[0]) ;
           int c2 = Integer.parseInt(args[1]) ;
           int c3 = Integer.parseInt(args[2]) ;

/*  1 */       if ( c1 != c3 ){
/*  2 */        if (c2==c1){
/*  3 */              
/*  4 */              System.out.println(c3 + c2 ) ; 
/*  5 */              c3 *= c2 ; 
/*  6 */        }

/*  7 */       }else{ 
/*  8 */        if ( c2==c1){
/*  9 */                    c3 *= 2 ; 
/* 10 */                    System.out.println( c3 ) ; 
/* 11 */                    c3 *= c2 ; 
/* 12 */            if ( c1 < c2 ) c2 += 7 ;
/* 13 */                   else c2 += 5 ; 
/* 14 */               }}

/* 15 */       System.out.println( c1+c2+c3) ;     
        }          
        .....
    }

Toutes les idées?

Était-ce utile?

La solution

Si vous c3 *= 2; cela va changer la valeur de c3 qui imprimera une valeur différente de la dernière ligne System.out.println( c1+c2+c3);. Donc, vous devez suivre la logique de votre programme.

Autres conseils

c3 *= 2; 
System.out.println( c3 ) ; 

imprimerait la même chose que:

System.out.println( c3 * 2 ) ; 

mais la différence essentielle est que, dans le premier cas, la valeur de la variable de c3 sera modifié (multiplié par 2), tandis que dans le second, elle restera la même.

Il est possible d'obtenir un résultat différent en fonction du type de votre variable - rappelez-vous *= (et ++, --, etc) jette le résultat du même type que c3. Par exemple:

byte b = 100;
System.out.println(b*2); // 200
b*=2;
System.out.println(b); // -56

Exemple: http://ideone.com/ojKfA

Si vous souhaitez modifier la variable et l'imprimer en même temps, vous pouvez le faire comme ceci:

System.out.println(c3 *= 2);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top