Невозможно понять, как это работает в случае понедельник: пятница: - PullRequest
0 голосов
/ 02 июня 2019
import java.time.LocalDate;
import static java.time.DayOfWeek.*;
public class Test 
{
    public static void main(String[] args) 
    {
        var today=LocalDate.now().with(WEDNESDAY).getDayOfWeek();
        switch(today)
        {
            case SUNDAY:
            case SATURDAY:
                System.out.println("Enjoy");
                break;
            case MONDAY : FRIDAY:
                System.out.println("Boaring");
            default:
                System.out.println("QuestionMark");
        }       
    }
}

Как это работает.любой может помочьОсобенно эта строка съедает мой разум:

case MONDAY : FRIDAY:

Ответы [ 2 ]

4 голосов
/ 02 июня 2019

Это похоже на неприятный случай нарушения синтаксиса. В этом конкретном случае case MONDAY: делает то, что я думаю, вы ожидаете.

Однако FRIDAY: не имеет никакого отношения к блоку переключателей. Это метка Java , прикрепленная к следующему оператору println, и поскольку на нее никогда не ссылаются, она просто не имеет никакого значения, кроме как серьезно сбить с толку.

Примечание: никогда не используйте этикетки. Есть гораздо более четкие способы выразить свои идеи.

1 голос
/ 02 июня 2019

Я думаю, что Chrylis уже хорошо объяснил, как работает ваш код. Немного больше предыстории: существуют языки программирования, которые принимают диапазон значений в качестве метки регистра в выражении типа переключателя. Однако в Java и других языках с C-подобными операторами switch необходимо указывать каждый случай индивидуально, например:

    case MONDAY:
    case TUESDAY:
    case WEDNESDAY:
    case THURSDAY:
    case FRIDAY:
        System.out.println("Boaring");
        break;

Вы также пропустили утверждение break, которое, как мне кажется, было предназначено после печати Boaring (иначе дело «провалится» в следующее дело и дополнительно напечатает QuestionMark).

Java 12 имеет некоторые улучшения синтаксиса оператора switch. См., Например, редактирование в этого ответа YCF_L .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...