Вопрос

Я сталкиваюсь с странной проблемой.

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

Я хочу вставить C3 * 2 в статирование PrintLN. Но

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

Есть идеи?

Это было полезно?

Решение

Если вы сделаете c3 *= 2; Это изменит ценность c3 который будет распечатать другое значение из последней строки System.out.println( c1+c2+c3);. Отказ Таким образом, вам нужно следовать логике вашей программы.

Другие советы

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

будет печатать то же самое, что и:

System.out.println( c3 * 2 ) ; 

Но решающее значение в том, что в первом случае ценность c3 Переменная будет изменена (умножена на 2), а во второй он останется прежним.

Можно получить разный результат в зависимости от типа вашей переменной - помните *= (а также ++, --, и т. Д.) Образуется результат к тому же типу, что и c3. Отказ Например:

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

Пример: http://ideone.com/ojkfa.

Если вы хотите изменить переменную и распечатать его одновременно, вы можете сделать это так:

System.out.println(c3 *= 2);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top