Java 你能在Android的switch case中使用条件语句吗?
在我的搜索中,我似乎找不到一个直接的是或否。在Android中,有没有一种方法可以在case switch中使用条件语句?例如,年龄为int值时:Java 你能在Android的switch case中使用条件语句吗?,java,android,switch-statement,Java,Android,Switch Statement,在我的搜索中,我似乎找不到一个直接的是或否。在Android中,有没有一种方法可以在case switch中使用条件语句?例如,年龄为int值时: switch (age){ case (>79): // Do this stuff break; case (>50): // Do this other stuff break; etc, etc 我尝试了几种方法来编写代码(完全是在黑暗中进行的),并发现了编译器错误,我还尝试了一个嵌套的IF语句,但它不支持break,因此逻
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个case语句来检查年龄,我不知道还有什么其他方法可以这样做。你不能使用if-then语句
if(age > 79)
{
//do stuff
}
else if(age > 50)
{
//do stuff
}
else
{
/do stuff
}
等等。不。你不能这样做
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.
} // ...
如果您使用的是循环,您可能需要查看。这不是一个使用开关的好地方
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
}
自JavaSE 7以来,开关的每一个大小写都应该是一个整数或字符串,并且您正试图向它提供一个布尔值,因此这是不可能的
您不能将条件语句与
开关一起使用
但是你可以用if
语句来实现!如果您有一个循环,您可以使用continue
停止任何后续行,并从最里面的循环开始
if(age>76){
// Code...
continue;
}else if(age>50){
// More Code...
continue;
}else{
// Even more code...
continue;
}
这是不可能的。相反,尝试这种极简主义方法
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();
这是可以做到的。
代码需要稍微修改一下
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;
}
}
publicstaticvoidmain(字符串[]参数)
{
INTX=1,年龄=55岁;
开关(x)
{
案例1:如果((年龄>=60)&&(年龄=18)&&(年龄=12)&&(年龄=12)&(年龄)你是通过一个循环运行这个吗?试着发布更多的代码。你可能想看看。这不是一个使用开关的好地方。唯一的问题是假设年龄是51岁,它会做50岁的if,也会做45岁的if,35岁的if,等等。我试着使用“break”但是,很明显,嵌套的if不起作用。那么,如何让它只做一个,而不做所有较低的if呢?正如我在回答中所说的,如果输入了if
块,它就不会进入else
块。这不是开关。因此,如果我理解正确,一旦满足了if条件,它就不再存在在嵌套的if块中计算所有其他嵌套的if?所以这好像暗示了中断?@Robert No.这些不是嵌套的if。这是if
然后else
如果(a>5){AAA;}如果(a>3){BBB;}否则{CCC;}
如果a是6就做AAA(其他什么都没有)。如果a是4就做BBB(其他什么都没有).如果a是-1,它可以做CCC…第一次测试,第二次测试,否则…谢谢!我想我现在明白了。我可能没有用正确的词,因为我对这个和学习非常陌生,但我明白了!:-)发布此问题的用户所包含的开关中的中断使得不需要继续。这与问题没有直接关系,即使它可以被视为有效的答案。请提供更多详细信息,因为问题是关于开关语句的,您的答案提供了if-then-else解决方案。@hotzst由于其他人的反对,在java switch循环中没有办法使用条件语句。相反,这种处理情况的方法可能不那么冗长。这是行不通的。由于x=1
,您将总是以case 1
结束。这是不对的。我没有在每个case之后使用break。因此它会验证每个case,而不是jus案例1。我确实错过了。但是,switch声明的目的是什么?它实际上只是一个if语句链。这会因为滥用switch/case而获得我个人的奖励