java - while - استخدام مشغلي العلائقية في التبديل




while statement java (5)

هل هناك طريقة لاستخدام مشغلي العلائقية (<، <=،>،> =) في بيان التبديل؟

int score = 95;

switch(score)  {
   case (score >= 90):
      // do stuff
}

المثال السابق (من الواضح) لا يعمل


ببساطة نو

int score = 95;

switch(score)  {
   case (score >= 90):
      // do stuff
}

أنت تمرير قيمة int switch . لذلك يجب أن تكون القضية في القيم الداخلية، حيث

(score >= 90)

يتحول boolean .

قضيتك هو كانديداييت جيدة ل if else


فإنه لن يعمل. يجب أن تفهم ما switch في المقام الأول.

وسوف تنفذ البيانات التي تقع تحت القضية التي تتطابق مع الوسيطة التبديل.

في هذه الحالة، score هي الوسيطة التي هي 95 ولكن score>=90 تقييم دائما إما true أو false ولا يطابق عدد صحيح.

يجب عليك استخدام if البيانات بدلا من ذلك.

أيضا جافا لا تسمح booleans في حالات التبديل لذلك نعم.


لا لا يمكنك.
من جلس-14.11

The type of the Expression must be char, byte, short, int, Character, Byte, Short, Integer, String, or an enum type 8.9), or a compile-time error occurs.  

المشغلين العلائقيين (<، <=،>،> =) ينتجون boolean وغير مسموح بها.

يجب أن يكون كل ما يلي صحيحا، أو يحدث خطأ في تجميع الوقت:

  • يجب أن يكون كل تعبير ثابت لكل حالة يرتبط ببيان التبديل قابلا للتخصيص (§5.2) لنوع التبديل التعبير.

  • لا يوجد أي من التعبيرات الثابتة للحالة المرتبطة ببيان التبديل قد يكون لها نفس القيمة.

  • لا توجد تسمية تبديل فارغة.

  • قد يتم ربط تسمية افتراضية واحدة على الأكثر مع نفس رمز التبديل.


للأسف لا ، على الرغم من أنك يمكن استخدام سقوط case (نوع من هاكي) من خلال تجميع بيانات حالة متعددة دون break وتنفيذ التعليمات البرمجية عندما ينتهي نطاق:

int score = 95;
switch(score) {
 ..
 case 79: System.out.println("value in 70-79 range"); break;
 case 80:
 ..
 case 85: System.out.println("value in 80-85 range"); break;
 case 90:
 case 91:
 case 92:
 case 93:
 case 94:
 case 95: System.out.println("value in 90-95 range"); break;
 default: break;
}

إمهو، وذلك باستخدام if كان من الأنسب في حالتك الخاصة.


هذا قد يساعدك إذا كنت بحاجة إلى القيام بذلك مع التبديل نفسه،

char g ='X';
            int marks = 65;
            switch(marks/10)
            {
                case 1:
                case 2:
                case 3:
                case 4: g = 'F';
                        break;
                case 5: g = 'E';
                        break;
                case 6: g = 'D';
                        break;
                case 7: g = 'C';
                        break;
                case 8: g = 'B';
                        break;
                case 9: 
                case 10: g = 'A';       
                         break;
            }
            System.out.println(g);

وهو يعمل بهذه الطريقة،

    if(marks<50)
                g='F';
            else if(marks<60)
                g='E';
            else if(marks<70)
                g='D';
            else if(marks<80)
                g='C';
            else if(marks<90)
                g='B';
            else if(marks<=100)
                g='A';




relational