Pergunta

Estou enfrentando um problema estranho.

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

Eu quero inserir C3*2 na declaração de impressão. Mas

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

me dá um resultado diferente.

Aqui está todo o código:

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

Alguma ideia?

Foi útil?

Solução

Se você fizer c3 *= 2; isso mudará o valor de c3 que imprimirá um valor diferente da última linha System.out.println( c1+c2+c3);. Então você precisa seguir a lógica do seu programa.

Outras dicas

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

Imprimiria a mesma coisa que:

System.out.println( c3 * 2 ) ; 

Mas a diferença crucial é que, no primeiro caso, o valor do c3 A variável será modificada (multiplicada por 2), enquanto no segundo permanecerá a mesma.

É possível obter resultado diferente, dependendo do tipo de sua variável - lembre -se *= (e também ++, --, etc) lança o resultado para o mesmo tipo que c3. Por exemplo:

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

Exemplo: http://ideone.com/ojkfa

Se você deseja modificar a variável e imprimi -la ao mesmo tempo, pode fazer assim:

System.out.println(c3 *= 2);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top