目录
实现功能
会员购物时,不同积分享受的折扣不同。
计算会员购物时获得的折扣,效果如下:
代码实现1:
import java.util.Scanner; public class TestIf05{ public static void main(String[] args){ //1.Scanner方法给出会员积分 Scanner sc=new Scanner(System.in); System.out.print("请输入会员积分:"); int score=sc.nextInt(); //2.if...else if...else...多分支语句实现根据积分判断折扣 if(score>=8000){ System.out.println("该会员享受的折扣是:0.6"); }else if(score>=4000){ System.out.println("该会员享受的折扣是:0.7"); }else if(score>=2000){ System.out.println("该会员享受的折扣是:0.8"); }else{ System.out.println("该会员享受的折扣是:0.9"); } } }
运行结果:
漏洞:
- 录入积分为小数时,没有提示错误。
- 录入积分为负数时,没有显示错误。
优化方法
- 使用Scanner类中的hasNextInt()判断录入积分是否为int类型
if(sc.hasNextInt()==true){//是int类型数据
int score = sc.nextInt();
......
}else{//不是int类型的数据
System.out.println("你录入的积分不是整数!");
}
- 使用if...else...判断录入积分是否为正数
if(score>0){
......
}else{//score<0
System.out.println("对不起,你录入的积分是负数!不符合需求!");
}
优化后代码
import java.util.Scanner; public class TestIf06{ public static void main(String[] args){ //Scanner方法给出会员积分 Scanner sc=new Scanner(System.in); System.out.print("请输入会员积分:"); //判断录入积分是否为int类型 if(sc.hasNextInt()==true){ int score=sc.nextInt(); //判断录入积分是否为正数 if(score>0){ //根据积分判断折扣方式 if(score>=8000){ System.out.println("该会员享受的折扣是:0.6"); }else if(score>=4000){ System.out.println("该会员享受的折扣是:0.7"); }else if(score>=2000){ System.out.println("该会员享受的折扣是:0.8"); }else{ System.out.println("该会员享受的折扣是:0.9"); } }else{//score<0 System.out.println("对不起,你录入的积分是负数!不符合需求!"); } }else{//不是int类型的数据 System.out.println("你录入的积分不是整数!"); } } }