我的问题很简单,如果无法实现相同的效果,下面的代码是否可以工作
int day = 5;
String dayString;
switch (if (day > 0) {
case 1:
dayString = "Monday";
day++;
break;
case 2:
dayString = "Tuesday";
day++;
break;
case 3:
dayString = "Wednesday";
day++;
break;
case 4:
dayString = "Thursday";
day++;
break;
case 5:
dayString = "Friday";
day++;
break;
case 6:
dayString = "Saturday";
day++;
break;
case 7:
dayString = "Sunday";
day++;
break;
default:
dayString = "Invalid day";
day++;
break;
}
System.out.println(dayString);
输出应为星期五,基本上我的问题是,您能否将if语句或while或for或do或其他语句放入相应语句的参数内。
答案 0 :(得分:2)
Java的语法具有许多不同的结构。这里特别重要的是表达式和声明。
表达式是具有值的东西。声明是执行某项操作的指令(*)。
if
是一个声明。其一般语法为:
if (expression) statement
({}
也是一种语句,这就是为什么您可以使用花括号包围要执行的代码的原因。)
expression
的类型必须为boolean
或Boolean
。
switch
也是一个声明。其一般语法为:
switch (expression) {
// ...
}
表达式的类型必须为int
,char
,short
,byte
(或与之成对的对等物),String
或{{1} }。您不能使用enum
,boolean
,long
或float
。
由于开关需要在括号中使用表达式,因此不能在其中使用语句。
(*)某些表达式也可以“做某事”,即它们有副作用,例如double
。这些是Java语言中称为i++
的特殊表达式,可以通过添加分号将其表示为语句:StatementExpression
是合法的,因为它有意义地执行了某些操作,而i++;
不是。 / p>
答案 1 :(得分:0)
上面的代码不起作用...该代码中存在语法错误。您不能在switch的括号内添加if条件...它期望一个变量来求值...条件使用case给出语句...获取星期五作为输出,只需将变量“ day”放在开关括号内即可,例如this-> switch(day)