使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数,输入样例: 数学87.5分,物理76.5分,英语97分 输出样例: 261.0
时间: 2023-10-07 15:13:22 浏览: 73
c#正则表达式截取指定字符串之间的字符串。类文件直接用就可以了~
5星 · 资源好评率100%
以下是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();
// 使用正则表达式提取数字部分
Pattern pattern = Pattern.compile("\\d+(\\.\\d+)?");
Matcher matcher = pattern.matcher(input);
double sum = 0.0;
while (matcher.find()) {
double score = Double.parseDouble(matcher.group());
sum += score;
}
System.out.printf("%.1f", sum);
}
}
```
程序首先使用 `Scanner` 类读入一行字符串。然后使用正则表达式 `\\d+(\\.\\d+)?` 匹配其中的数字部分,其中 `\\d+` 表示至少一个数字,`(\\.\\d+)?` 表示小数部分可有可无。然后使用 `Double.parseDouble()` 方法将匹配到的数字字符串转换为浮点数,并将其加入总成绩中。最后使用 `printf()` 方法输出结果,保留一位小数。
阅读全文