import java.util.Scanner; public class hw4{ public static void main(String[] args){ Scanner sn=new Scanner(System.in); System.out.println("请输入结账金额:"); double money=sn.nextInt(); DecimalFormat df = new DecimalFormat("#.#"); System.out.println("您是否是会员:(Y或者N)"); String flag=sn.next(); if(flag.equals("N")){ System.out.println("您不是会员,结账金额:"+df.format(money)); }else{ if(money>=1000){ money=0.8*money; System.out.println("尊敬的会员,应付金额:"+df.format(money)); }else if(money>=500&&money<1000){ money=0.85*money; System.out.println("尊敬的会员,应付金额:"+df.format(money)); }else if(money<500&&money>=100){ money=0.9*money; System.out.println("尊敬的会员,应付金额:"+df.format(money)); }else{ money=0.95*money; System.out.println("尊敬的会员,应付金额:"+df.format(money)); } } } }
时间: 2024-01-11 14:02:43 浏览: 75
java代码-实训4-3 import java.util.Scanner
这段代码是一个 Java 程序,它实现了一个简单的优惠结算功能。程序提示用户输入结账金额和会员状态,然后根据输入的信息计算出应付金额。如果用户不是会员,就不打折。
程序的运行流程如下:
1. 创建 Scanner 对象 sn,用于读取用户输入。
2. 提示用户输入结账金额,并读取用户输入的数值,存储在变量 money 中。
3. 创建 DecimalFormat 对象 df,用于格式化输出的金额数值。
4. 提示用户输入会员状态,并读取用户输入的字符串,存储在变量 flag 中。
5. 如果用户不是会员,直接输出结账金额并结束程序。
6. 如果用户是会员,根据结账金额和会员等级计算出打折后的应付金额,并输出结果。
程序的逻辑比较简单,主要是使用了 if-else 分支结构和 DecimalFormat 类来实现。需要注意的是,这段代码存在一些问题,例如:
1. 用户输入的结账金额应该使用 sn.nextDouble() 方法读取,而不是 sn.nextInt() 方法。
2. 在 DecimalFormat 的格式化字符串中,应该使用 "#0.0" 而不是 "#.#",这样可以保证输出结果始终包含小数点和一位小数。
3. 如果用户输入的会员状态不是 Y 或 N,程序会直接结束,应该加入错误处理逻辑,提示用户重新输入。
4. 程序缺少注释,不易理解。
完整的改进版代码如下:
```java
import java.util.Scanner;
import java.text.DecimalFormat;
public class hw4 {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
System.out.println("请输入结账金额:");
double money = sn.nextDouble();
DecimalFormat df = new DecimalFormat("#0.0");
System.out.println("您是否是会员:(Y或者N)");
String flag = sn.next();
if (flag.equals("N")) {
System.out.println("您不是会员,结账金额:" + df.format(money));
} else if (flag.equals("Y")) {
double discount = 1.0;
if (money >= 1000) {
discount = 0.8;
} else if (money >= 500 && money < 1000) {
discount = 0.85;
} else if (money < 500 && money >= 100) {
discount = 0.9;
} else {
discount = 0.95;
}
double pay = money * discount;
System.out.println("尊敬的会员,应付金额:" + df.format(pay));
} else {
System.out.println("输入错误,请输入 Y 或 N");
}
}
}
```
阅读全文