使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数。 ============================== 输入样例: 数学:87.5分,物理:76.5分,英语:97分 输出样例: 261.0
时间: 2023-07-24 08:42:54 浏览: 62
以下是使用Scanner类和正则表达式解析字符串的Java代码实现:
```java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ExamScoreParser {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
double totalScore = 0;
Pattern pattern = Pattern.compile("(\\d+(\\.\\d+)?)[分,]");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
double score = Double.parseDouble(matcher.group(1));
totalScore += score;
}
System.out.printf("%.1f", totalScore);
}
}
```
代码解释:
1. 创建Scanner对象,读取一行输入字符串。
2. 关闭Scanner对象。
3. 创建Pattern对象,使用正则表达式匹配输入字符串中的数字。
4. 创建Matcher对象,对输入字符串进行匹配。
5. 使用while循环,逐个处理匹配结果。
6. 将每个数字字符串转换为double类型,加到总成绩中。
7. 输出总成绩,保留一位小数,使用printf方法格式化输出。
相关推荐
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![asm](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)