将if else语句更改为switch语句

时间:2014-10-15 20:35:27

标签: java switch-statement do-while

我想知道将do while循环中的if语句转换为do while循环中的switch语句的最佳方法是什么。

什么是收紧此代码的更好方法?

    do{


        currency = keyboard.nextInt();

        if (currency == 1)
        {
            sterling = euros * 0.79;
            System.out.printf("£ %.2f", sterling);
        }
        else if (currency == 2)
        {
            usDollars = euros * 1.28;
            System.out.printf("$ %.2f", usDollars);
        }
        else if (currency == 3){
            auDollars = euros * 1.44;
            System.out.printf("$ %.2f", auDollars);
        }
        else{
            System.out.printf("Invalid Option");
        }


        System.out.printf("\nWould you like to go again");
        System.out.printf("\n1. Yes\n2  No");
        repeat = keyboard.nextInt();

        if (repeat ==  2){
            System.out.printf("Exit Program");
            System.exit(0);
        }
    }while(repeat == 1);

3 个答案:

答案 0 :(得分:0)

对于您的示例,如果statement和switch将执行完全相同的操作。没有区别。 您可以从代码中更改的内容是最后一个if语句:

if (repeat ==  2){
   System.out.printf("Exit Program");
   System.exit(0);
}

你可以在do while之外写下这个if语句,并且只会检查一次。

答案 1 :(得分:0)

Switch case看起来像这样

 switch (currency) {
            case 1:  System.out.printf("£ %.2f", euros * 0.79);
                     break;
            case 2: . 
                    .
                    .
                    .
                    .
                    .
                    .
            case n: . 
                     break;
            default: System.out.printf("Invalid Option");
                     break;
            }

即使它处于循环中也是如此(for,while,do while)

详细了解Switch语句并尝试自行完成代码

在旁注中,除非您使用存储,否则无需创建变量(sterlingusDollarsauDollars)来存储表达式euros * 0.79的值。以后的使用情况似乎并非如此。

答案 2 :(得分:0)

您可以将转化率放在一个数组中,然后使用原来的数据 switch / if变量来索引该数组。类似的东西:

            float[] rates = {0.79f, 1.28f, 1.44f};

            answer = euros * rates[currency-1];
            System.out.printf("$ %.2f", answer);


那你就不需要选择陈述了。一般来说,如果你看到很多结构重复,那么找一下常用代码并尝试将其分解出来。