你能在Android的switch-case中使用条件语句吗?

时间:2014-09-19 19:02:59

标签: java android switch-statement

在我的搜索中,我似乎无法直截了当地回答是或否。在Android中,有没有办法在case-switch中使用条件语句?例如,age为int值:

switch (age){
case (>79):
 // Do this stuff
 break;
case (>50):
 // Do this other stuff
break;
etc, etc

我已经尝试了几种编码方式(完全在黑暗中拍摄)并出现编译错误,我也尝试过嵌套的IF语句,但它并不支持break所以逻辑分解并最终在嵌套中执行较低的ELSE代码。我觉得switch-case是我最好的选择,但是我无法找到一个正确的语法示例,我正在尝试做什么!任何帮助,将不胜感激。我找到的所有例子都只是使用switch-case来做一些事情,比如如果它是1这样做,如果它是2那样做,但没有做100个案例陈述来检查年龄,我不是确定如何解决这个问题。

7 个答案:

答案 0 :(得分:7)

没有。你不能这样做,

switch (age){
case (>79):
  // Do this stuff
  break;
case (>50):
  // Do this other stuff
  break;
}

您需要ifelse

if (age > 79) {
 // do this stuff.
} else if (age > 50) {
 // do this other stuff.
} // ...

答案 1 :(得分:6)

这是不可能的。相反,尝试这种极简主义的方法

 age > 79 ? first_case_method() 
          : age > 50 ? second_case_method() 
          : age > 40 ? third_case_method() 
          : age > 30 ? fourth_case_method() 
          : age > 20 ? fifth_case_method()
          : ... 
          : default_case_method();

答案 2 :(得分:1)

如果声明那么你就不能这样做。

if(age > 79)
{
   //do stuff
}
else if(age > 50)
{
   //do stuff
}
else
{
   /do stuff
}

等...

答案 3 :(得分:0)

如果您使用循环,可能需要查看What is the "continue" keyword and how does it work in Java?。这不是一个使用开关的好地方。

if(age > 79)
{
   //do stuff
   continue; // STOP FLOW HERE AND CONTINUE THE LOOP
}
else if(age > 50)
{
   //do stuff
   continue; // STOP FLOW HERE AND CONTINUE THE LOOP
}

答案 4 :(得分:0)

每个switch的情况应该是一个整数或字符串,因为JavaSE 7并且你试图给它一个布尔值,所以它不可能.Read oracle doc详细了解java switch http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

答案 5 :(得分:-1)

您不能对switch使用条件语句。

但你可以用if语句来做到这一点!如果你有一个循环,你可以使用continue来停止任何即将到来的行,并从最里面的循环的开头开始。

if(age>76){
    // Code...
    continue;
}else if(age>50){
    // More Code...
    continue;
}else{
    // Even more code...
    continue;
}

答案 6 :(得分:-4)

可以做到。 代码需要略微改变。

public static void main(String[]arguments)
    {
        int x=1, age=55;
        switch(x)
        {
        case 1: if((age>=60)&&(age<200))
            System.out.println("Senior Citizen");
        case 2: if((age>=18)&&(age<60))
            System.out.println("Adult");
        case 3: if((age>=12)&&(age<18))
            System.out.println("Teenager");
            break;
        default :
            System.out.println("Child");
            break;
        }
}