如何在嵌套的switch case中使用if else

时间:2017-05-06 22:18:19

标签: java

每当我运行循环时 "如果循环"运行正常但是,其中一个显示语法错误消息 是否切换案例支持,否则循环或不? 还有一个疑问是如何准备ocjp认证本身。

public static void main(String ah[])
    {
    int a,b,c,d=0,ch;
    Scanner sc=new Scanner(System.in);

    System.out.println("enter two number ");

    a=sc.nextInt();
    b=sc.nextInt();
    System.out.println("enter your choise \n1.add\n2.sub\3.div\4.multi ");
    ch=sc.nextInt();
    switch(ch)
    {
    case 1:
        c=a+b;
        System.out.println("sum is = "+c);
        break;
    case 2:
        c=a-b;
        System.out.println("subtraction is = "+c);
        break;
    case 3:
        System.out.println("press 1 & 2");
        ch=sc.nextInt();
        switch(ch)
        {

        case 1:
            if(a>b)
                d=b/a;
            System.out.println("divi is = "+d);
            //showing error = syntax error
            else
                System.out.println("");
            break;




        case 2:
                d=a/b;
            System.out.println("divistion is = "+d);
            break;

        }
        break;
    case 4:
        c=a*b;
        System.out.println("multiplication is = "+c);
        break;
        default :
            System.out.println("wrong input ");

    }

    }

}

3 个答案:

答案 0 :(得分:4)

    if(a>b)
        d=b/a;
    System.out.println("divi is = "+d);
    //showing error = syntax error
    else
        System.out.println("");

elseif无关,因为您没有括号。你有效写的是:

    if(a>b) {
        d=b/a;
    }
    System.out.println("divi is = "+d);

    else
        System.out.println("");

使用大括号:

    if(a>b) {
        d=b/a;
        System.out.println("divi is = "+d);
    } else {
        System.out.println("");
    }

请注意,有些(例如Google's style guide)会建议始终使用大括号,即使它们之间只有一个语句。

另请注意,这与switch语句无关:如果没有切换,您将获得完全相同的问题。

答案 1 :(得分:3)

试试这个:

case 1:
        if(a>b){
            d=b/a;
            System.out.println("divi is = "+d);
        }else
            System.out.println("");
        break;

为了在if块中包含多个语句,您需要使用括号来分隔它。

在Java中,总是使用括号来定义块也是一种很好的做法。

答案 2 :(得分:2)

问题是你在else之前调用if语句有多个语句,所以你应该将它们用大括号括起来:

case 1:
        if(a>b)
        {
           d=b/a;
           System.out.println("divi is = "+d);
        }
        else
            System.out.println("");
        break;