开发者

Insert variables to minimize code

I am facing a st开发者_运维问答range problem.

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

I want to insert c3*2 in the println statment. But

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

gives me a different result.

Here is the whole code:

        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) ;     
        }          
        .....
    }

Any ideas?


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

would print the same thing as:

System.out.println( c3 * 2 ) ; 

but the crucial difference is that in the first case the value of the c3 variable will be modified (multiplied by 2) while in the second it will stay the same.


It's possible to get different result depending on the type of your variable - remember *= (and also ++, --, etc) casts the result to the same type as c3. For example:

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

Example: http://ideone.com/ojKfA


If you do c3 *= 2; it will change the value of c3 which will print a different value from the last line System.out.println( c1+c2+c3);. So you need to follow the logic of your program.


If you want to modify variable and print it at the same time you can do it like this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜