我想知道将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);
答案 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语句并尝试自行完成代码
在旁注中,除非您使用存储,否则无需创建变量(sterling
,usDollars
,auDollars
)来存储表达式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);
那你就不需要选择陈述了。一般来说,如果你看到很多结构重复,那么找一下常用代码并尝试将其分解出来。