StringTokenizer的使用

一、從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。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/256941.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:43
下一篇 2024-12-15 12:43

發表回復

登錄後才能評論