Switch语句可以实现多重选择的逻辑结构,然后执行case语句的后续代码;它的计算结果必须是整型、字符型、字符串或枚举;break用于退出switch语句结构;default用于当没有匹配到任何case时,执行默认逻辑
使用Switch实现账单随机打折
import java.math.BigDecimal;
public class Test04 {
public static void main(String[] args) {
//实付金额
BigDecimal orderMoney = new BigDecimal("1234.56");
//通过随机数,产生一个随机折扣值
int rand = (int)(Math.random()*10);
//支付金额
BigDecimal payMoney = null;
//折扣
BigDecimal sale = null;
//判断折扣
switch(rand) {
case 0:
sale = new BigDecimal("0.0");
break;
case 1:
sale = new BigDecimal("0.1");
break;
case 2:
sale = new BigDecimal("0.2");
break;
case 3:
sale = new BigDecimal("0.3");
break;
case 4:
sale = new BigDecimal("0.4");
break;
case 5:
sale = new BigDecimal("0.5");
break;
case 6:
sale = new BigDecimal("0.6");
break;
case 7:
sale = new BigDecimal("0.7");
break;
case 8:
sale = new BigDecimal("0.8");
break;
case 9:
sale = new BigDecimal("0.9");
break;
}
//计算实付金额
payMoney = orderMoney.multiply(sale);
//折扣值处理:0.1=>1折
String saleValue = "免单";
//x.compareTo(y) 比较 x与y的大小
//返回值结果为: x = y
//返回值结果大于0: x > y
// 返回值结果小于0: x< y
//sale > 0.0
if(sale.compareTo(new BigDecimal("0.0"))==1) {
saleValue = sale.multiply(new BigDecimal("10")).toString();
}
//输出结果
System.out.println("账单金额:¥"+orderMoney);
System.out.println("实付金额:¥"+payMoney+"【"+saleValue+"折】");
//格式化输出
System.out.printf("实付金额:¥%s【%s折】",payMoney,saleValue);
}
}
- 通过随机数,产生一个随机折扣值
- 支付金额、折扣设为空
- 通过switch判断折扣
- 计算实付金额
- x.compareTo(y) 比较 x与y的大小:返回值结果为: x = y;返回值结果大于0: x > y; 返回值结果小于0: x< y
- 使用普通输出和格式化输出折扣后的金额以及折扣
账单金额:¥1234.56
实付金额:¥246.912【2.0折】
实付金额:¥246.912【2.0折】