练习-java字符串之stringtokenizer类分割字符串之计算手机话费总额
时间: 2023-05-31 08:18:59 浏览: 111
### 回答1:
首先,我们需要输入一串包含电话号码和通话时长的字符串。然后,我们可以使用StringTokenizer类将其分割成电话号码和通话时长两个部分。接着,我们可以将通话时长转换为分钟,并计算出每个电话号码的通话费用。最后,将所有电话号码的通话费用相加,即可得到总的手机话费总额。
### 回答2:
Java中的StringTokenizer类可以用来将一个字符串按照指定的分隔符进行分割。在计算手机话费总额时,可以将输入的字符串按照空格分割成若干个字符串,每个字符串中包含一个电话号码和一个通话时间。
使用StringTokenizer类分割字符串的基本步骤如下:
1. 创建一个StringTokenizer对象,并指定分隔符。
2. 调用StringTokenizer对象的nextToken()方法,逐个获取分割后的字符串。
3. 对每个分割后的字符串进行处理,获取电话号码和通话时间。
4. 将通话时间转换为分钟,并计算电话费用。
5. 累加每个电话的费用,得到总话费。
下面是一个示例程序:
```
import java.util.Scanner;
import java.util.StringTokenizer;
public class PhoneBillCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入电话清单:");
String input = scanner.nextLine();
StringTokenizer tokenizer = new StringTokenizer(input);
double total = 0;
while (tokenizer.hasMoreTokens()) {
String token = tokenizer.nextToken();
int index = token.indexOf(":");
String number = token.substring(0, index);
String duration = token.substring(index + 1);
int minutes = Integer.parseInt(duration) / 60 + 1;
double cost = minutes * 0.2;
System.out.println(number + ":" + duration + "秒," + minutes + "分钟," + cost + "元");
total += cost;
}
System.out.println("总话费:" + total + "元");
}
}
```
该程序首先通过Scanner类获取用户输入的电话清单字符串,然后创建StringTokenizer对象,设置分隔符为默认的空格。然后在循环中逐个获取分割后的字符串,对每个字符串进行处理,获取电话号码和通话时间,并计算通话时间和费用。最后累加每个电话的费用,得到总话费并输出。
### 回答3:
Java字符串中有一个StringTokenizer类可用于分割字符串。该类可以将一个字符串分割成许多部分,每个部分是由指定的分隔符隔开的。我们可以使用该类来计算手机话费总额。
首先,我们需要定义一个包含所有电话通话记录的字符串,并用逗号将它们分隔开。例如:
String records = "10,90,30,120,60,180,50";
然后,我们需要使用StringTokenizer类将该字符串分割成不同的部分:
StringTokenizer st = new StringTokenizer(records, ",");
上面的代码将使用逗号作为分隔符将字符串records分割成不同的部分。现在,我们可以使用一个循环来遍历所有的电话通话记录,并将它们加起来:
int totalCost = 0;
while (st.hasMoreTokens()) {
int callTime = Integer.parseInt(st.nextToken());
int cost = calculateCost(callTime);
totalCost += cost;
}
上面的代码会循环遍历所有的通话记录,每次通过st.nextToken()获取一个通话记录。然后,我们将获取到的通话记录转换为整型,并使用一个calculateCost()方法计算其花费。最后,我们将每个通话记录的花费加起来,得到总话费。
现在,我们还需要定义一个calculateCost()方法来计算每个通话记录的花费。考虑到每个通话的计费标准可能不同,我们可以在该方法中使用一些条件语句来根据通话时间计算其花费。例如:
private int calculateCost(int callTime) {
int cost = 0;
if (callTime <= 30) {
cost = 1;
} else if (callTime <= 60) {
cost = 2;
} else if (callTime <= 120) {
cost = 3;
} else {
cost = 5;
}
return cost;
}
在上面的代码中,我们根据通话时间的不同,使用一些条件语句来计算通话的花费。例如,当通话时间小于等于30分钟时,花费为1元,当通话时间在31-60分钟之间时,花费为2元,依此类推。最后,将计算出来的花费返回给主方法。
最后,在主方法中,我们可以直接输出总话费,或者将其存储在一个变量中,供后续使用。
完整代码示例:
import java.util.*;
public class PhoneBill {
public static void main(String[] args) {
String records = "10,90,30,120,60,180,50";
StringTokenizer st = new StringTokenizer(records, ",");
int totalCost = 0;
while (st.hasMoreTokens()) {
int callTime = Integer.parseInt(st.nextToken());
int cost = calculateCost(callTime);
totalCost += cost;
}
System.out.println("Total cost is: " + totalCost + " yuan.");
}
private static int calculateCost(int callTime) {
int cost = 0;
if (callTime <= 30) {
cost = 1;
} else if (callTime <= 60) {
cost = 2;
} else if (callTime <= 120) {
cost = 3;
} else {
cost = 5;
}
return cost;
}
}