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

Can you use conditional statements in switch-case in Android?

在我的寻找中,我似乎找不到一个直截了当的肯定或否定。在android中,有没有一种在case switch中使用条件语句的方法?例如,年龄是一个int值:

1
2
3
4
5
6
7
8
switch (age){
case (>79):
 // Do this stuff
 break;
case (>50):
 // Do this other stuff
break;
etc, etc

我尝试了几种方法来编写代码(完全在黑暗中进行拍摄),并提出了编译器错误,我还尝试了一个嵌套的if语句,但它不支持break,因此逻辑崩溃,最后在嵌套中执行其他代码。我觉得switch case是我最好的选择,但是我找不到一个正确语法的例子来说明我要做的事情!任何帮助都将不胜感激。我发现的所有例子都是使用开关盒做一些事情,比如,如果它是1,那么就这样做,如果它是2,那么就这样做,但是如果不做100个案例陈述来对照年龄,我不知道还能怎么做。


不,你不能这样做,

1
2
3
4
5
6
7
8
switch (age){
case (>79):
  // Do this stuff
  break;
case (>50):
  // Do this other stuff
  break;
}

你需要一个ifelse

1
2
3
4
5
if (age > 79) {
 // do this stuff.
} else if (age > 50) {
 // do this other stuff.
} // ...


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

1
2
3
4
5
6
7
 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();


不能使用if-then语句。

1
2
3
4
5
6
7
8
9
10
11
12
if(age > 79)
{
   //do stuff
}
else if(age > 50)
{
   //do stuff
}
else
{
   /do stuff
}

等。。。


每一个交换机的情况都应该是JavaASE 7中的一个整数或字符串,并且您试图将布尔值馈送给它,这样就不可能了。http://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html


如果你正在使用一个循环,你可能想看看什么是"继续"关键字,它是如何在Java中工作的?这不是使用开关的好地方。

1
2
3
4
5
6
7
8
9
10
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
}

不能在switch中使用条件语句。

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

1
2
3
4
5
6
7
8
9
10
if(age>76){
    // Code...
    continue;
}else if(age>50){
    // More Code...
    continue;
}else{
    // Even more code...
    continue;
}


这是可以做到的。代码需要稍作修改。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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;
        }
}