使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数。 ============================== 输入样例: 数学87.5分,物理76.5分,英语97分 输出样例: 261.0
时间: 2023-07-24 09:42:35 浏览: 63
以下是使用Scanner类和正则表达式解析字符串,计算出总成绩的Java代码:
```java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
scanner.close();
double totalScore = 0.0;
Pattern pattern = Pattern.compile("(\\d+(\\.\\d+)?)分");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
totalScore += Double.parseDouble(matcher.group(1));
}
System.out.printf("%.1f", totalScore);
}
}
```
代码说明:
1. 使用Scanner类从标准输入中读取一行字符串。
2. 关闭Scanner对象。
3. 定义totalScore变量,用于存储总成绩,初始值为0.0。
4. 定义正则表达式模式,该模式匹配形如"87.5分"的字符串。
5. 创建Matcher对象,用于在输入字符串中查找符合模式的子串。
6. 使用while循环,不断查找符合模式的子串,并将子串中的分数累加到totalScore变量中。
7. 使用printf方法输出totalScore变量的值,保留一位小数。
相关推荐
![asm](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)