【问题标题】:Can you you use conditional statements in other conditional statements?你能在其他条件语句中使用条件语句吗?
【发布时间】:2020-01-14 06:50:34
【问题描述】:

我的问题很简单,下面的代码能用吗,如果不能有没有办法达到同样的效果

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

【问题讨论】:

  • "下面的代码可以工作" 当你运行它会发生什么?
  • if (day > 0) 的目的是什么?只是switch (day) {...}
  • 不,这行不通。它也不会编译
  • 在问之前你有没有计算过你的亲子关系,因为你显然没有尝试过这个......
  • 您希望if (day > 0) 部分有什么不同?现在,您所描述的只是一个switch (day) { ... } 声明。当day 小于等于 0 时,你想发生什么事情吗?

标签: java if-statement switch-statement


【解决方案1】:

Java 的语法有许多不同的结构。这里特别相关的是表达式语句

表达式是有值的东西。语句是做某事的指令 (*)。

if 是一个声明。它的一般语法是:

if (expression) statement

{} 也是一种语句,这就是为什么你可以用大括号括住你要执行的代码)。

expression 必须是 booleanBoolean 类型。

switch 也是一个声明。它的一般语法是:

switch (expression) {
  // ...
}

表达式的类型必须为 intcharshortbyte(或它们的盒装对应项)、Stringenum。您不能使用booleanlongfloatdouble

因为 switch 需要括号中的表达式,所以不能在那里使用语句。


(*) 有些表达式也可以“做某事”,即它们有副作用,例如i++。这些是 Java 语言中称为 StatementExpressions 的特殊表达式,可以通过添加分号来编写为语句:i++; 是合法的,因为它有意义地做了某事,i; 不是。

【讨论】:

  • if 中的表达式必须是布尔类型。在 switch 中它可以是其他类型。
【解决方案2】:

上面的代码不起作用...该代码中存在语法错误。您不能在 switch 的大括号内添加 if 条件...它需要一个变量来评估...条件是使用大小写给出的语句...将 friday 作为输出简单地将变量 'day' 放在 switch 大括号内 - 像这样 -> switch(day)

【讨论】:

  • 您不能在 do、while、for 循环的花括号中添加 if 条件...只能在循环体中添加
猜你喜欢
  • 2020-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
相关资源
最近更新 更多