والمشغل لا يعمل عند استخدامه في كتلة المعرف الأخرى

StackOverflow https://stackoverflow.com/questions/20353906

  •  25-08-2022
  •  | 
  •  

سؤال

لدي كتلة من التعليمات البرمجية ، والتي تتحقق من الحالة التي تم فحصها من خانة الاختيار وتعرض القيمة وفقًا لذلك ، ولكن في الكود الخاص بي ، لدي مكان يجب أن أستخدم فيه بيان مثل

if (cb1.isChecked()) {
a="abc";        
} 

else if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

أحصل على القيم إذا تم تحديد مربع Check1 أو CheckBox2 ، ولكن عند تحديد كل من مربعات الاختيار ، أحصل على نتيجة "ABC" فقط

أي فكرة ما هو الخطأ في الكود ؟؟

هل كانت مفيدة؟

المحلول

هذا لأنه else if بدلاً من ifس. بمجرد أن يكون أول واحد مقتنعًا ، فإنه لا يتحقق من الآخرين. قم بتغيير الترتيب الذي تقوم فيه بفحص هذه. لذلك شيء مثل

if (cb1.isChecked() && cb2.isChecked()) {
    a="abc";        
} 
else if(cb1.isChecked()) {
    a="pqr";
}   
else if(cb2.isChecked()){
    a="asd";
}   
else{
    a="xyz";
}

نصائح أخرى

التغيير إلى:

if(cb1.isChecked() && cb2.isChecked()) {
a="pqr";
}

else if (cb1.isChecked()) {
a="abc";        
} 

else if(cb2.isChecked()){
a="asd";
}

else{
a="xyz";
}

في الكود الخاص بك إذا تم التحقق من CD1 ، فلن يذهب إلى آخر بعد الآن.

في سلم آخر ، سيتم تنفيذ كتلة واحدة فقط ، يجب عليك القيام بذلك مثل ما يلي:

if (cb1.isChecked()) {
    a = cb2.isChecked() ? "pqr" : "abc";       
} else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

أو

if(cb1.isChecked() && cb2.isChecked()) {
    a="pqr";
}
else if (cb1.isChecked()) {
    a="abc";        
} 
else if(cb2.isChecked()){
    a="asd";
}
else{
    a="xyz";
}

مع آخر إذا لم يكن هو يدخل الأول إذا لم يدخل بقيةها ، فقط خذ آخر ومستخدم IFS فقط ويعمل

تعديل أولا إذا

if (cb1.ischecked () &&! cb2.ischecked ())

في الوقت الحاضر ، نظرًا لأن الظروف الأولى تعتمد فقط على قيمة CB1 ، لذلك يذهب التحكم إلى الكتلة الأولى.

لا يذهب التحكم أبدًا إلى الكتلة الثانية في المنطق الحالي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top