在我的寻找中,我似乎找不到一个直截了当的肯定或否定。在android中,有没有一种在case switch中使用条件语句的方法?例如,年龄是一个int值:
switch (age){
case (>79):
// Do this stuff
break;
case (>50):
// Do this other stuff
break;
etc, etc
我尝试了几种方法来编写代码(完全在黑暗中进行拍摄),并提出了编译器错误,我还尝试了一个嵌套的if语句,但它不支持break,因此逻辑崩溃,最后在嵌套中执行其他代码。我觉得switch case是我最好的选择,但是我找不到一个正确语法的例子来说明我要做的事情!任何帮助都将不胜感激。我发现的所有例子都是使用开关盒做一些事情,比如,如果它是1,那么就这样做,如果它是2,那么就这样做,但是如果不做100个案例陈述来对照年龄,我不知道还能怎么做。
你是通过一个循环来运行这个吗?尝试发布更多代码。
您可能需要查看stackoverflow.com/questions/389741/continue-keyword-in-java。这不是使用开关的好地方。
不,你不能这样做,
switch (age){
case (>79):
// Do this stuff
break;
case (>50):
// Do this other stuff
break;
}
你需要一个if和else,
if (age > 79) {
// do this stuff.
} else if (age > 50) {
// do this other stuff.
} // ...
唯一的问题是,假设年龄是51岁,如果是50岁,如果是45岁,如果是35岁,等等。我尝试使用"break";但显然,这不适用于嵌套的if。那么,你如何让它只做一个没有所有低层的?
正如我在回答中所说,如果输入了if块,它就不会进入else块。这不是一个switch。
所以,如果我正确理解您的话,一旦满足了一个if条件,它就不再计算该嵌套if块中的所有其他嵌套if了?所以这就像是暗示了休息?
@罗伯特不。这些不是嵌套的ifs。这是if,然后是else。如果a是6,那么if (a > 5) { AAA; } else if (a > 3) { BBB; } else { CCC; }将做AAA(而不是其他任何事情)。如果A是4,它将做BBB(而不是其他)。如果A是-1,它会做CCC….第一个测试,第二个测试,否则….
谢谢!我想我现在明白了。我可能没有用正确的词,因为我对这个和学习很陌生,但我明白了!-)
这是不可能的。相反,试试这种极简主义的方法
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();
这与问题没有直接关系,即使通过它可以被看作是一个有效的答案。请提供更多详细信息,因为问题是关于switch语句的,而您的答案提供了if-then-else解决方案。
正如其他人已经提到的那样,在Java切换循环中没有使用条件语句的方法。相反,这种处理情况的方法可能不那么复杂。
不能使用if-then语句。
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中工作的?这不是使用开关的好地方。
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停止任何即将到来的行,从最里面的循环开始。
if(age>76){
// Code...
continue;
}else if(age>50){
// More Code...
continue;
}else{
// Even more code...
continue;
}
在他切换的中断中,发布这个问题的用户不需要继续。
这是可以做到的。代码需要稍作修改。
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;
}
}
那不管用。自从x = 1以后,你总是以case 1结束。
那是不对的。每件案子之后我都没有休息。所以它验证了每一个案例,而不仅仅是案例1。
我真的错过了。但是switch语句的目的是什么呢?实际上,它只是一个if语句链。
这是我个人因滥用开关/箱子而获得的奖励。