Java. Урок 13. Условия. Оператор Case

Уроки для начинающих   16 Январь 2013  Автор статьи:  

Если необходимо написать несколько условий, то используется оператор case. Оператор switch — case работает с точными сравнениями и имеет следующий синтаксис:

1
2
3
4
5
6
7
switch (переменная)
{
  case значение1 : операторы1
  case значение2 : операторы2
  case значениеn : операторыn
  default: операторыПоУмолчанию
}

Таким образом, если вам нужно вывести количество дней в зависимости от номера месяцы, то вы можете написать это с помощью if-ов:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int m;
int dayCount;
/*
Считали откуда - то m
*/

if(m==1) dayCount = 31;
if(m==2) dayCount = 28;
if(m==3) dayCount = 31;
if(m==4) dayCount = 30;
if(m==5) dayCount = 31;
if(m==6) dayCount = 30;
if(m==7) dayCount = 31;
if(m==8) dayCount = 31;
if(m==9) dayCount = 30;
if(m==10) dayCount = 31;
if(m==11) dayCount = 30;
if(m==12) dayCount = 31;

Но с помощью case сделать это можно намного проще:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
switch (m) {
            case 1:  dayCount = 31;
                     break;
            case 2:  dayCount = 28;
                     break;
            case 3:  dayCount = 31;
                     break;
            case 4:  dayCount = 30;
                     break;
            case 5:  dayCount = 31;
                     break;
            case 6:  dayCount = 30;
                     break;
            case 7:  dayCount = 31;
                     break;
            case 8:  dayCount = 31;
                     break;
            case 9:  dayCount = 30;
                     break;
            case 10: dayCount = 31;
                     break;
            case 11: dayCount = 30;
                     break;
            case 12: dayCount = 31;
                     break;
}

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

1
2
3
switch (m) {
  default: System.out.println("Error");
}

Кроме целочисленных значений, можно использовать и строковые, начиная с 7 JDK:

1
2
3
4
5
6
7
8
string month;
switch (month)
{
  case "январь": dayCount = 31;
/*
И так далее
*/

}

Если не поставить оператор break в конце любой группы операторов, то выполнятся все группы оператором, начиная с той, где оператор case окажется истинным:

1
2
3
4
5
6
7
8
9
10
11
12
public class test {
    public static void main(String[] args) {
        int a = 0;
        double b = (int) a;
        switch (a)
        {
            case 2 : System.out.println(2);//не выполнится
            case 0 : System.out.println(0);//выполнится
            case 1 : System.out.println(1);//выполнится
        }
    }
}




Оператор case Delphi
Оператор case C++

  • EnderGenom

    множественные варианты для кейса через запятую есть?

    • http://cybern.ru/ lordrp

      Нет.

      • switch (a){
        case 1:
        case 2:
        System.out.println(a < 3);
        break;
        case 3:
        System.out.println(a == 3);
        break;
        default:
        System.out.println("wtf?");
        }

  • Svintus Lentus

    if(m==1) dayCount = 31;

    if(m==2) dayCount = 28;

    if(m==3) dayCount = 31;

    if(m==4) dayCount = 30;

    if(m==5) dayCount = 31;

    if(m==6) dayCount = 30;

    if(m==7) dayCount = 31;

    if(m==8) dayCount = 31;

    if(m==9) dayCount = 30;

    if(m==10) dayCount = 31;

    if(m==11) dayCount = 30;

    if(m==12) dayCount = 31;

    я бы так написал:
    int DayCount[11]=31,28,31,30,31,30,31,31,30,31,30,31;
    System.out(DayCount[m-1]);

  • Asia4444_

    Этот пример:
    switch (m) {
    case 1: dayCount = 31;
    break;
    case 2: dayCount = 28;
    break;
    case 3: dayCount = 31;
    break;
    case 4: dayCount = 30;
    break;
    case 5: dayCount = 31;
    break;
    case 6: dayCount = 30;
    break;
    case 7: dayCount = 31;
    break;
    case 8: dayCount = 31;
    break;
    case 9: dayCount = 30;
    break;
    case 10: dayCount = 31;
    break;
    case 11: dayCount = 30;
    break;
    case 12: dayCount = 31;
    break;
    Можно записать короче, вот так:
    switch (m) {
    case 12
    case 10:
    case 8:
    case 7:
    case 5:
    case 3:
    case 1: dayCount = 31;
    break;
    case 2: dayCount = 28;
    break;
    case 4:
    case 6:
    case 9:
    case 11: dayCount = 30;
    break;
    И такая конструкция похожа на перечисление через запятую.

Научиться программировать

  • на Delphi

  • на Java

  • на C++