使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数。 ============================== 输入样例: 数学:87.5分,物理:76.5分,英语:97分 输出样例: 261.0 自动换行
时间: 2023-08-06 21:23:02 浏览: 107
好的,这里是可以解析字符串并计算总分的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();
// 使用正则表达式匹配成绩
Pattern pattern = Pattern.compile("(\\d+\\.?\\d*)分");
Matcher matcher = pattern.matcher(input);
// 计算总分
double sum = 0.0;
while (matcher.find()) {
sum += Double.parseDouble(matcher.group(1));
}
// 输出结果
System.out.printf("%.1f\n", sum);
}
}
```
通过正则表达式 `(\\d+\\.?\\d*)分` 来匹配成绩,其中 `(\\d+\\.?\\d*)` 表示匹配一个或多个数字,可选小数点和零个或多个数字,最后加上 `分` 字符串作为结尾。在计算总分时,使用 `Double.parseDouble()` 方法将匹配到的字符串转换为浮点数并累加到 `sum` 变量中。最后使用 `System.out.printf()` 方法输出总分,保留一位小数,并自动换行。
希望这个代码能够帮助您。
阅读全文