1

私は奇妙な問題に直面しています。

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

printlnステートメントにc3*2を挿入したいと思います。だが

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

別の結果が得られます。

コード全体は次のとおりです。

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

何か案は?

4

4 に答える 4

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

次のように同じものを出力します。

System.out.println( c3 * 2 ) ; 

ただし、決定的な違いは、最初のケースではc3変数の値が変更 (2 倍) されるのに対し、2 番目のケースでは同じままであるということです。

于 2010-10-31T09:11:07.517 に答える
3

変数の型に応じて異なる結果が得られる可能性があります - 覚えておいてください*=(また++--など) は、結果を と同じ型にキャストしc3ます。例えば:

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

例: http://ideone.com/ojKfA

于 2010-10-31T09:15:27.143 に答える
1

これを行うc3 *= 2;と、値が変更さc3れ、最後の行とは異なる値が出力されますSystem.out.println( c1+c2+c3);。したがって、プログラムのロジックに従う必要があります。

于 2010-10-31T09:35:09.690 に答える
1

変数の変更と印刷を同時に行う場合は、次のように実行できます。

System.out.println(c3 *= 2);
于 2010-10-31T09:40:13.903 に答える