Java应用_获取购物小票数字信息

如何在纯文本类的购物小票中获取并分析数字信息?
一、StringTokenzier类的使用
  1. StringTokenzier类可以将String对象分析成独立使用的单词,其具体有两构造方法:
    StringTokenzier(String s),使用默认标记分隔单词;
    StringTokenzier(String s, String delim),使用指定的delim字符分隔单词;
  2. 利用StringTokenizer的构造方法我们可以构建出来一个StringTokenizer对象,即关于String s的分析器;
  3. 这个分析器可以使用nextToken()方法获取分析器内的单词,也可以使用countTokens()方法得到分析器中的单词数,还可以用hasMoreTokens()方法确认是否分析器内还有单词。
二、使用String Tokenzier分析小票

Main.java

package StringTokenizer;

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        System.out.println("请输入购物小票内容:");
        Scanner reader = new Scanner(System.in);
        String shoppingReceipt = reader.next();

        PriceToken priceToken = new PriceToken();
        System.out.println("本次购买:"+ priceToken.getGoodAcounts(shoppingReceipt)+"件商品");
        System.out.println("共   计:"+ priceToken.getAverPrice(shoppingReceipt)+"元");
        System.out.println("平均每件:"+priceToken.getAveragePrice(shoppingReceipt)+"元");
    }
}

PriceToken.java

package StringTokenizer;
import java.util.StringTokenizer;
public class PriceToken {

    //分析购物小票数据并返回一个StringTokenizer对象
    public StringTokenizer getStringTokenizer(String shoppingReceipt){
        String regex = "[^0123456789.]+";   //匹配非数字字符序列
        shoppingReceipt = shoppingReceipt.replaceAll(regex, "#");   //将订单中文字全替换为#
        StringTokenizer stringTokenizer = new StringTokenizer(shoppingReceipt, "#");    //以#为分隔找出所有数字
        return stringTokenizer;
    }

    //获取商品的数目
    public int getGoodAcounts(String shoppingReceipt){
        StringTokenizer stringTokenizer = getStringTokenizer(shoppingReceipt);
        return stringTokenizer.countTokens();
    }

    //获取商品价格的总和
    public double getAverPrice(String shoppingReceipt){
        StringTokenizer stringTokenizer = getStringTokenizer(shoppingReceipt);
        double sum = 0;
        while (stringTokenizer.hasMoreTokens()){
            String item = stringTokenizer.nextToken();
            double price = Double.parseDouble(item);
            sum += price;
        }
        return sum;
    }

    //获取商品的平均价格
    public double getAveragePrice(String shoppingReceipt){
        return getAverPrice(shoppingReceipt)/getGoodAcounts(shoppingReceipt);
    }
}
三、运行结果

在这里插入图片描述

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是Java打印超市消费小票的代码示例: ```java import java.text.SimpleDateFormat; import java.util.Date; public class PrintReceipt { public static void main(String[] args) { // 商品名称 String[] goods = {"可乐", "薯片", "饼干", "牛奶", "巧克力"}; // 商品单价 double[] prices = {3.50, 2.80, 4.20, 5.00, 7.50}; // 商品数量 int[] amounts = {2, 3, 1, 2, 1}; // 计算总价和优惠金额 double total = 0; double discount = 0; for (int i = 0; i < goods.length; i++) { total += prices[i] * amounts[i]; if (amounts[i] >= 3) { discount += prices[i] * amounts[i] * 0.1; } } double actual = total - discount; // 打印小票头部 System.out.println("**********超市购物小票**********"); System.out.println("名称\t单价\t数量\t金额"); // 打印商品信息 for (int i = 0; i < goods.length; i++) { System.out.println(String.format("%s\t%.2f\t%d\t%.2f", goods[i], prices[i], amounts[i], prices[i] * amounts[i])); } // 打印小票底部 System.out.println("--------------------------------"); System.out.println(String.format("总计:%.2f元", total)); System.out.println(String.format("优惠:%.2f元", discount)); System.out.println(String.format("实付:%.2f元", actual)); System.out.println(String.format("日期:%s", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))); System.out.println("**********谢谢惠顾,欢迎下次光临**********"); } } ``` 运行结果如下: ``` **********超市购物小票********** 名称 单价 数量 金额 可乐 3.50 2 7.00 薯片 2.80 3 8.40 饼干 4.20 1 4.20 牛奶 5.00 2 10.00 巧克力 7.50 1 7.50 -------------------------------- 总计:37.10元 优惠:1.50元 实付:35.60元 日期:2021-09-22 15:32:45 **********谢谢惠顾,欢迎下次光临********** ``` 以上代码实现了一个超市购物小票的打印功能,包括商品名称、单价、数量、金额、总价、优惠金额、实付金额、日期等信息。可以根据实际需求进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值