学习-Java字符串之StringToKenizer类分割字符串之计算购物小票商品总金额

第1关:学习-Java字符串之StringToKenizer类分割字符串之计算购物小票商品总金额

任务描述

本关任务:接收给定的购物小票字符串,计算该小票的商品总金额。

相关知识

在 Java 类库的 java.util 包中包含一个用于进行字符串词法分析的类 StringTokenizer,该类对字符串分解的方法进行封装,简化了应用程序设计过程中的工作量。

StringTokenizer类的构造方法

该类的三个构造方法如下:

 
  1. StringTokenizer(String str)
  2. StringTokenizer(String str,String delim)
  3. StringTokenizer(String str,String delim, boolean returnTokens)

其中 str 代表需要分解的字符串,delim 代表分隔符,returnTokens 代表是否返回分隔符。 在对一个字符串进行解析的时候,必须包括一个用于解析的分隔符号。但是我们注意到第一个表达式没有使用分隔符,那是因为它使用了默认分隔符,默认分隔符有空格、制表符(‘\t’)、换行符(‘\n’)、回车符(‘\r’)。

使用示例:

 
  1. // 使用默认的空格分隔符
  2. StringTokenizer str = new StringTokenizer("we are student");
  3. // 使用逗号分隔符
  4. StringTokenizer str1 = new StringTokenizer("we,are,student",",");
StringTokenizer类的常用方法

countTokens():统计分隔符个数。 示例:

 
  1. public static void main(String[] args) {
  2. String str = new String("I lover java");
  3. StringTokenizer st = new StringTokenizer(str);
  4. int nTokens = st.countTokens();
  5. System.out.print(nTokens);
  6. }

执行结果:3。 hasMoreTokens():一般是用该方法判断在字符串中是否还有已经定义的分隔符。 nextToken():返回从当前位置到下一个分隔符的字符串。

hasMoreTokens() 方法和 nextToken() 方法使用示例:

 
  1. public static void main(String[] args)
  2. {
  3. String str = "runoob,google,taobao,facebook,zhihu";
  4. // 以 , 号为分隔符来分隔字符串
  5. StringTokenizer st=new StringTokenizer(str,",");
  6. while(st.hasMoreTokens()) {
  7. System.out.println(st.nextToken());
  8. }
  9. }

执行结果:

 
  1. runoob
  2. google
  3. taobao
  4. facebook
  5. zhihu

使用以上两个方法我们便把字符串中的单词通过逗号分隔符切割出来。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。

可在右侧 “测试结果”区查看具体的测试集详情。

例: 测试输入(冒号为中文冒号):

 
  1. 包菜:55
  2. 青菜:32
  3. 牛肉:43
  4. 瘦肉:39

预期输出

 
  1. 购物小票总金额:169

开始你的任务吧,祝你成功!

源代码:

import java.util.Scanner;
import java.util.StringTokenizer;

public class StrTest {

    public static void main(String[] args) {
            // 请在Begin-End间编写代码
            /********** Begin **********/

            // 第一步:接收给定的购物小票字符串(由四行组成)
            Scanner input = new Scanner(System.in);
            String str1 = input.next();
            String str2 = input.next();
            String str3 = input.next();
            String str4 = input.next();
            // 第二步:拼接四行字符串
            String str = str1 + "," +str2 + ","  + str3 + "," + str4;
            // 第三步:分隔字符串,累加每种商品的价格
            int sum = 0;
            String price = null;
            StringTokenizer strToken = new StringTokenizer(str,",");
            while (strToken.hasMoreTokens()){
                StringTokenizer st = new StringTokenizer(strToken.nextToken(),":");
                while (st.hasMoreTokens()){
                   st.nextToken();
                   price = st.nextToken();
                }
                sum += Integer.parseInt(price);
            }

            // 第四步:输出总金额
            System.out.println("购物小票总金额:" + sum);
           /********** End **********/

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值