用Java使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数。输入样例: 数学87.5分,物理76.5分,英语97分 输出样例: 261.0
时间: 2023-10-09 19:11:11 浏览: 75
可以使用Java的Scanner类和正则表达式来解析字符串,具体步骤如下:
1. 创建Scanner对象,将字符串作为输入源。
2. 定义一个正则表达式,用于匹配课程名和成绩。例如:"(\\D+):(\\d+\\.?\\d*)分",其中\\D+表示匹配所有非数字字符,\\d+\\.?\\d*表示匹配一个或多个数字(可带小数点)。
3. 使用Scanner的useDelimiter()方法设置分隔符,将正则表达式作为参数。
4. 使用while循环遍历每个匹配项,并将成绩累加到总成绩中。
5. 输出总成绩,保留一位小数。
完整代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("数学:87.5分,物理:76.5分,英语:97分");
scanner.useDelimiter("(\\D+):(\\d+\\.?\\d*)分"); // 设置分隔符为正则表达式
double totalScore = 0;
while (scanner.hasNext()) {
String courseName = scanner.next(); // 匹配课程名
double score = Double.parseDouble(scanner.next()); // 匹配成绩
totalScore += score;
}
System.out.printf("%.1f", totalScore); // 输出总成绩,保留一位小数
}
}
```
输出结果为:
```
261.0
```
阅读全文