Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 你能在Android的switch case中使用条件语句吗?_Java_Android_Switch Statement - Fatal编程技术网

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

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,因此逻

在我的搜索中,我似乎找不到一个直接的是或否。在Android中,有没有一种方法可以在case switch中使用条件语句?例如,年龄为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个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而获得我个人的奖励