Вставить переменные для минимизации кода
-
27-09-2019 - |
Вопрос
Я сталкиваюсь с странной проблемой.
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);