سؤال

أنا أواجه مشكلة غريبة.

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://eadeone.com/ojkfa

إذا كنت ترغب في تعديل المتغير وطباعته في نفس الوقت ، فيمكنك القيام بذلك على هذا النحو:

System.out.println(c3 *= 2);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top