使用Scanner类和正则表达式解析字符串"数学:87.5分,物理:76.5分,英语:97分"中的考试成绩,并计算出总成绩,其中课程门数和课程名不确定。 输入为一字符串,输出为浮点数,精确度一位小数。 ============================== 输入样例: 数学87.5分,物理76.5分,英语97分 输出样例: 261.0
时间: 2023-07-24 22:42:36 浏览: 73
表达式代码,可以输入相关的字符串计算出结果
以下是使用Scanner类和正则表达式解析字符串的代码:
```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();
Pattern pattern = Pattern.compile("(\\d+\\.?\\d*)分");
Matcher matcher = pattern.matcher(input);
double totalScore = 0.0;
while (matcher.find()) {
double score = Double.parseDouble(matcher.group(1));
totalScore += score;
}
System.out.printf("%.1f", totalScore);
}
}
```
首先,我们使用Scanner类从标准输入中读取一行字符串。然后,我们使用正则表达式"(\\d+\\.?\\d*)分"匹配字符串中的考试成绩。这个正则表达式表示一个或多个数字,可能包含一个小数点,后面跟着一个"分"字。其中,小数点可以没有,即成绩可以是整数。
接下来,我们使用Matcher类遍历所有匹配的结果,并将其转换为浮点数累加到总成绩中。最后,我们使用System.out.printf()方法输出总成绩,精确到一位小数。
阅读全文