用java程序编写:计算购物小票中商品价格的和。要求:购物小票的内容自拟,需要使用正则表达式和学习过的分词方法。在编程过程中需体现自己的姓名和学号(例如:" X 双学号为 XX,最后消费了X元)
时间: 2024-10-19 20:03:13 浏览: 36
在Java中编写一个简单的购物小票价格计算器,可以按照以下步骤进行:
首先,我们创建一个`Scanner`对象来接收用户输入,然后定义一个正则表达式来匹配商品信息,包括商品名称和价格。接着,我们可以利用`split()`方法对每条商品信息进行分词。
```java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ShoppingCart {
private String name;
private double price;
public ShoppingCart(String itemInfo) { // 商品类,包含名称和价格属性
Pattern pattern = Pattern.compile("\\s*(\\w+):\\s*([0-9]+\\.?[0-9]*)"); // 正则表达式,匹配商品名和价格
Matcher matcher = pattern.matcher(itemInfo);
if (matcher.find()) {
this.name = matcher.group(1);
this.price = Double.parseDouble(matcher.group(2));
} else {
throw new IllegalArgumentException("Invalid item info format.");
}
}
public double getTotalPrice() {
return price;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入购物小票内容(如:苹果:5.6 香蕉:3.2):");
String receipt = scanner.nextLine();
// 分割输入的小票,假设每行代表一条商品信息
String[] items = receipt.split("\n");
double totalPrice = 0.0;
for (String item : items) {
ShoppingCart cartItem = new ShoppingCart(item);
totalPrice += cartItem.getTotalPrice();
}
System.out.printf("学生姓名(例如:张三),学号XX,最后消费总额:%f元%n", totalPrice);
scanner.close(); // 关闭扫描器
}
}
```
在这个例子中,我们将每个商品信息视为一个字符串,并尝试通过正则表达式解析出商品名称和价格。然后将所有商品的价格累加,最后输出总金额。
阅读全文