java笔记 StringTokenizer

这个StringTokenizer是个分析类
使用他的构造函数,可以直接截取字符

构造StringTokenizer fenxi = new StringTokenizer("you#*are*##welcome", "#*")
如果指定 # 和 * 是分割符,那么字符 #* 的任意排列都是分割符
you***#are*#*#welcom 也是3个单词

对象可以使用nextToken()方法逐个获取被截取的字符串
我们可以在while中使用函数hasMoreTokens(),只要还有截取的字符串,就能继续循环

对象自身有一个计数器,获得被截取的字符串个数,每调用一次nextToken(),计数减一

import com.sun.jdi.event.StepEvent;

import java.util.StringTokenizer;

class PriceToken
{
    
    
    // 获得价钱总价
    public double getPriceSum(String shoppingReceipt)
    {
    
    
        String regex = "[^0123456789.]+";
        shoppingReceipt = shoppingReceipt.replaceAll(regex, "#"); // 将字符串中的所有非数字字符转化为#
        StringTokenizer fenxi = new StringTokenizer(shoppingReceipt, "#");  // 以#为序列分割

        double sum = 0;
        while (fenxi.hasMoreTokens())   // 只要还存在被截取的字符序列
        {
    
    
            String item = fenxi.nextToken();
            double price = Double.valueOf(item);
            sum = sum + price;
        }
        return sum;
    }

    // 获得物品数
    public int getGoodsAmount(String shoppingReceipt)
    {
    
    
        String regex = "[^0123456789.]+";
        shoppingReceipt = shoppingReceipt.replaceAll(regex, "#");

        StringTokenizer fenxi = new StringTokenizer(shoppingReceipt, "#");
        int amount = fenxi.countTokens();  // 计数,看被截取了多少个序列

        return amount;
    }

    // 获得平均值
    public double getAverPrice(String shoppingReceipt)
    {
    
    
        double priceSum = getPriceSum(shoppingReceipt);
        int goodsAmount = getGoodsAmount(shoppingReceipt);
        return priceSum / goodsAmount;
    }
}
public class test
{
    
    
    public static void main(String[] args)
    {
    
    
        String shoppingReceipt = "牛奶:8.5元,香蕉:3.6元,酱油:2.8元";
        PriceToken lookPriceMess = new PriceToken();

        System.out.println(shoppingReceipt);

        double sum = lookPriceMess.getPriceSum(shoppingReceipt);
        String Sum = String.format("%.2f", sum);

        System.out.println("购物总价:" + Sum);

        int amount = lookPriceMess.getGoodsAmount(shoppingReceipt);
        double aver = lookPriceMess.getAverPrice(shoppingReceipt);
        String Aver = String.format("%.2f", aver);

        System.out.println("总共"+ amount + "个物品," + "平均价格:" + Aver);
    }
}

在这里插入图片描述


public class test
{
    
    
    public static void main(String[] args)
    {
    
    
        String shoppingReceipt = "牛奶:8.5元,香蕉:3.6元,酱油:2.8元";
        String rec = "[^0123456789.]+";
        shoppingReceipt = shoppingReceipt.replaceAll(rec, "#");
        StringTokenizer fenxi = new StringTokenizer(shoppingReceipt, "#");

        for(int i = 0;i < 3;i++)
        {
    
    
            String s = fenxi.nextToken();
            System.out.println(s);
            System.out.println("被截取的字符串还有" + fenxi.countTokens() + "个");
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yogur_father/article/details/109081971