第1关:学习-Java字符串之StringToKenizer类分割字符串之计算购物小票商品总金额
任务描述
本关任务:接收给定的购物小票字符串,计算该小票的商品总金额。
相关知识
在 Java 类库的 java.util 包中包含一个用于进行字符串词法分析的类 StringTokenizer,该类对字符串分解的方法进行封装,简化了应用程序设计过程中的工作量。
StringTokenizer类的构造方法
该类的三个构造方法如下:
StringTokenizer(String str)
StringTokenizer(String str,String delim)
StringTokenizer(String str,String delim, boolean returnTokens)
其中 str 代表需要分解的字符串,delim 代表分隔符,returnTokens 代表是否返回分隔符。 在对一个字符串进行解析的时候,必须包括一个用于解析的分隔符号。但是我们注意到第一个表达式没有使用分隔符,那是因为它使用了默认分隔符,默认分隔符有空格、制表符(‘\t’)、换行符(‘\n’)、回车符(‘\r’)。
使用示例:
// 使用默认的空格分隔符
StringTokenizer str = new StringTokenizer("we are student");
// 使用逗号分隔符
StringTokenizer str1 = new StringTokenizer("we,are,student",",");
StringTokenizer类的常用方法
countTokens():统计分隔符个数。 示例:
public static void main(String[] args) {
String str = new String("I lover java");
StringTokenizer st = new StringTokenizer(str);
int nTokens = st.countTokens();
System.out.print(nTokens);
}
执行结果:3。 hasMoreTokens():一般是用该方法判断在字符串中是否还有已经定义的分隔符。 nextToken():返回从当前位置到下一个分隔符的字符串。
hasMoreTokens() 方法和 nextToken() 方法使用示例:
public static void main(String[] args)
{
String str = "runoob,google,taobao,facebook,zhihu";
// 以 , 号为分隔符来分隔字符串
StringTokenizer st=new StringTokenizer(str,",");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}
执行结果:
runoob
google
taobao
facebook
zhihu
使用以上两个方法我们便把字符串中的单词通过逗号分隔符切割出来。
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
测试说明
平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。
可在右侧 “测试结果”区查看具体的测试集详情。
例: 测试输入(冒号为中文冒号):
包菜:55
青菜:32
牛肉:43
瘦肉:39
预期输出
购物小票总金额: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 **********/
}
}