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; } |
你需要一个
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 } |
不能在
但是你可以用
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; } } |