一、从StringTokenizer的用法计算账单
我们可以使用StringTokenizer来计算账单。假设我们有以下结账单:
String bill = "面包,10,3|饼干,5,2|牛奶,20,1";
我们想要计算总共的花费。首先,我们需要将字符串按照"|"拆分为每一项,使用StringTokenizer的构造函数实现:
StringTokenizer st = new StringTokenizer(bill, "|");
然后,我们可以使用循环和StringTokenizer的nextToken()方法逐一获取每一项,并按照","拆分为商品名称、价格和数量。最后,我们将每项花费累加起来即可:
double totalCost = 0.0;
while (st.hasMoreTokens()) {
String item = st.nextToken();
StringTokenizer itemSt = new StringTokenizer(item, ",");
String itemName = itemSt.nextToken();
double itemPrice = Double.parseDouble(itemSt.nextToken());
int itemCount = Integer.parseInt(itemSt.nextToken());
totalCost += itemPrice * itemCount;
}
System.out.println("总共花费:" + totalCost);
二、StringTokenizer split
除了使用StringTokenizer的构造函数拆分字符串外,我们还可以使用String类的split方法。但是需要注意,StringTokenizer在拆分时会将分隔符消耗掉,而split方法不会。 举个例子:
String example = "apple,banana,orange";
String[] array = example.split(",");
System.out.println(Arrays.toString(array)); // ["apple", "banana", "orange"]
StringTokenizer st = new StringTokenizer(example, ",");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken()); // "apple", "banana", "orange"
}
可以看到,array和使用StringTokenizer得到的结果是相同的,但是在使用StringTokenizer时分隔符","被消耗掉了。
三、StringTokenizer类
StringTokenizer类是Java中用于拆分字符串的类,其常用的构造函数有两种:
- StringTokenizer(String str, String delim):按照指定的分隔符拆分字符串。
- StringTokenizer(String str, String delim, boolean returnDelims):按照指定的分隔符拆分字符串,如果returnDelims参数为true,则分隔符也会作为Token返回。 除此之外,StringTokenizer类还有许多方法,包括:
- hasMoreTokens():判断是否还有Token未被获取。
- nextToken():获取下一个Token。
- countTokens():获取剩余未被获取的Token数量。
四、StringTokenizer在哪个包
StringTokenizer类位于java.util包中。
五、String和StringTokenizer的区别
String和StringTokenizer都是Java用于处理字符串的类,它们的不同点在于:
- String:String是不可变对象,一旦创建String对象,其值就不能被改变。使用String类的方法可以操作字符串。
- StringTokenizer:StringTokenizer是可变对象,可以在遍历字符串的途中改变其状态,比如增加或删除Token。使用StringTokenizer类的方法可以遍历和操作Token。