分别使用StringTokenizer类、Scanner类、Pattern类和Matcher类的实例解析字符串:"数学87分,物理76分,英语96分"中的考试成绩,并计算出总成绩以及平均分数。
时间: 2023-03-26 19:00:31 浏览: 56
可以使用以下代码解析字符串并计算总成绩和平均分数:
```
import java.util.Scanner;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String str = "数学87分,物理76分,英语96分";
int mathScore = , physicsScore = , englishScore = ;
double totalScore = , avgScore = ;
// 使用StringTokenizer类解析字符串
StringTokenizer st = new StringTokenizer(str, ",");
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.contains("数学")) {
mathScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
} else if (token.contains("物理")) {
physicsScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
} else if (token.contains("英语")) {
englishScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
}
}
// 使用Scanner类解析字符串
Scanner scanner = new Scanner(str);
while (scanner.hasNext()) {
String token = scanner.next();
if (token.contains("数学")) {
mathScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
} else if (token.contains("物理")) {
physicsScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
} else if (token.contains("英语")) {
englishScore = Integer.parseInt(token.replaceAll("[^-9]", ""));
}
}
// 使用Pattern类和Matcher类解析字符串
Pattern pattern = Pattern.compile("(\\D+)(\\d+)(\\D+)(\\d+)(\\D+)(\\d+)");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
mathScore = Integer.parseInt(matcher.group(2));
physicsScore = Integer.parseInt(matcher.group(4));
englishScore = Integer.parseInt(matcher.group(6));
}
// 计算总成绩和平均分数
totalScore = mathScore + physicsScore + englishScore;
avgScore = totalScore / 3;
System.out.println("数学成绩:" + mathScore);
System.out.println("物理成绩:" + physicsScore);
System.out.println("英语成绩:" + englishScore);
System.out.println("总成绩:" + totalScore);
System.out.println("平均分数:" + avgScore);
}
}
```