java用户从键盘输入购物清单,如“棒棒糖5元,面包10.5元,矿泉水4元,方便面12.8元……”分解出单据中的费用,并计算并输出此次消费总费用以及结算时间,如: “2023年6月1日,共计消费:32.3元”。
时间: 2024-03-21 18:42:44 浏览: 8
好的,我可以帮你解答这个问题。
你可以使用Java中的Scanner类来从键盘读取用户输入的购物清单,例如:
```java
Scanner scanner = new Scanner(System.in);
System.out.println("请输入购物清单:");
String shoppingList = scanner.nextLine();
```
接下来,你可以使用正则表达式来匹配购物清单中的价格信息,并将它们累加起来,计算出总费用,例如:
```java
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?元");
Matcher matcher = pattern.matcher(shoppingList);
double totalCost = 0.0;
while (matcher.find()) {
String match = matcher.group();
double cost = Double.parseDouble(match.substring(0, match.length() - 1));
totalCost += cost;
}
```
最后,你可以使用Java中的Date类来获取当前日期和时间,并将其格式化为指定的字符串格式,例如:
```java
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年M月d日");
String dateString = format.format(date);
System.out.println(dateString + ",共计消费:" + totalCost + "元");
```
完整的代码如下:
```java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.Date;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入购物清单:");
String shoppingList = scanner.nextLine();
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?元");
Matcher matcher = pattern.matcher(shoppingList);
double totalCost = 0.0;
while (matcher.find()) {
String match = matcher.group();
double cost = Double.parseDouble(match.substring(0, match.length() - 1));
totalCost += cost;
}
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy年M月d日");
String dateString = format.format(date);
System.out.println(dateString + ",共计消费:" + totalCost + "元");
}
}
```
希望这个例子能够帮到你!