您可以在其他条件语句中使用条件语句吗?

时间:2020-01-14 06:50:34

标签: java if-statement switch-statement

我的问题很简单,如果无法实现相同的效果,下面的代码是否可以工作

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或其他语句放入相应语句的参数内。

2 个答案:

答案 0 :(得分:2)

Java的语法具有许多不同的结构。这里特别重要的是表达式声明

表达式是具有值的东西。声明是执行某项操作的指令(*)。

if是一个声明。其一般语法为:

if (expression) statement

{}也是一种语句,这就是为什么您可以使用花括号包围要执行的代码的原因。)

expression的类型必须为booleanBoolean

switch也是一个声明。其一般语法为:

switch (expression) {
  // ...
}

表达式的类型必须为intcharshortbyte(或与之成对的对等物),String或{{1} }。您不能使用enumbooleanlongfloat

由于开关需要在括号中使用表达式,因此不能在其中使用语句。


(*)某些表达式也可以“做某事”,即它们有副作用,例如double。这些是Java语言中称为i++的特殊表达式,可以通过添加分号将其表示为语句:StatementExpression是合法的,因为它有意义地执行了某些操作,而i++;不是。 / p>

答案 1 :(得分:0)

上面的代码不起作用...该代码中存在语法错误。您不能在switch的括号内添加if条件...它期望一个变量来求值...条件使用case给出语句...获取星期五作为输出,只需将变量“ day”放在开关括号内即可,例如this-> switch(day)