目录
1 实验名称
StringTokenizer类
2 实验目的
掌握在eclipse中调试代码
掌握StringTokenizer类中方法的使用
掌握正则表达式的使用
输出结果如下所示:
“苹果56.7元;香蕉12元;芒果19.8元”价格总和:
88.5元
“酱油6.7元;盐0.8元;榨菜9.8元”价格总和:
17.3元
3 实验源代码
Application.Java:
public class Application {
public static void main(String[] args) {
String shoppingReceipt = "苹果56.7元;香蕉12元;芒果19.8元";
String shoppingReceipt2 = "酱油6.7元;盐0.8元;榨菜9.8元";
PriceToken lookPriceMess = new PriceToken();
System.out.println(shoppingReceipt);
System.out.println(shoppingReceipt2);
int amount = lookPriceMess.getGoodsAmount(shoppingReceipt);
double aver = lookPriceMess.getPriceSum(shoppingReceipt);
int amount2 = lookPriceMess.getGoodsAmount(shoppingReceipt2);
double aver2 = lookPriceMess.getPriceSum(shoppingReceipt2);
System.out.printf("\n商品数目:%d,价格总和:%-7.2f",amount,aver);
System.out.printf("\n商品数目:%d,价格总和:%-7.2f",amount2,aver2);
}
}
PriceToken.java:
public 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.parseDouble(item);
sum = sum+price;
}
return sum;
}
public double getAverPrice(String shoppingReceipt) {
double priceSum = getPriceSum(shoppingReceipt);
int goodsAmount = getGoodsAmount(shoppingReceipt);
return priceSum/goodsAmount;
}
public int getGoodsAmount(String shoppingReceipt){
String regex = "[^0123456789.]+";
shoppingReceipt = shoppingReceipt.replaceAll(regex,"#");
StringTokenizer fenxi = new StringTokenizer(shoppingReceipt,"#");
int amount = fenxi.countTokens();
return amount;
}
}
4 实验运行结果图
5 总结
使用StringTokenizer类对象也可分解String对象的字符序列,与split()方法不同的是,它不使用正则表达式作分隔标记。当分析一个String对象的字符序列并将字符序列分解成可被独立使用的单词时可使用它这个类。该类有两个常用的构造方法。其中StringTokenizer(String s)为String对象s构造一个分析器,使用默认的分隔标记。本实验中,把非数字的字符序列替换成统一的字符,以便分隔标记分解出数字单词。