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:
答案 0 :(得分:4)
这看起来像是一个讨厌的语法滥用案例。在这种情况下,case MONDAY:
会达到您的期望。
但是,FRIDAY:
与切换块完全没有关系。它是附加在以下println
语句之后的Java label,并且由于从未被引用过,因此除了引起严重的混淆之外,它没有其他意义。
注意:切勿使用标签。有很多更清晰的方式表达您的想法。
答案 1 :(得分:1)
我认为chrylis已经很好地解释了您的代码如何工作。作为更多背景知识:存在一种编程语言,这些语言接受一系列值作为类switch语句中的大小写标签。但是,在Java和其他具有类似C的switch
语句的语言中,您需要分别指定每种情况,例如:
case MONDAY:
case TUESDAY:
case WEDNESDAY:
case THURSDAY:
case FRIDAY:
System.out.println("Boaring");
break;
您还丢失了我认为在打印break
之后打算使用的Boaring
语句(否则该案例将“掉入”到下一个案例并另外打印QuestionMark
)。 / p>
Java 12对switch
语句语法进行了一些改进。例如,请参见this answer by YCF_L中的编辑。