学生选修课成绩统计问题
选修课格次成绩使用字母表示,规则为:A=5,B=4,C=3,D=2,E=1
编写程序统计每个同学两门选修课的分数成绩
输入格式:多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开
数据统计:将每个学生的两门课格次成绩,转换为分数成绩并求和
输出格式:结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入格式:
多个学生的格次成绩使用西文逗号分开,整理为一行;每个学生姓名在前面,格次成绩在后,之间均使用空格分开
输出格式:
结果为一行,姓名在前总分在后,之间空格分开;不同学生的记录之间使用西文逗号分开,注意最后的记录末尾没有逗号
输入样例:
在这里给出一组输入。例如:
zs A B,ls A C,ww B C
输出样例:
在这里给出相应的输出。例如:
zs 9,ls 8,ww 7
代码如下:
两种方法。
import java.util.Scanner;
public class chengjitongji {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] str = sc.nextLine().split(",");//用“,”拆分字符串(split)
String[][] data = new String[str.length][3];//此处的3是每个人三个信息,即name,成绩等级1,成就等级2
for(int i=0;i<str.length;i++) {
data[i] = str[i].split(" ");
}
for(int i=0;i<str.length;i++) {
int grade = 0;
for(int j=0;j<3;j++) {
// if(data[i][j].equals("A")) { //equals()用于比较两个对象是否相等,相等则返回true,不等则返回false
// grade += 5; //返回值为true,所以if语句生效
// }else if(data[i][j].equals("B")) {
// grade += 4;
// }else if(data[i][j].equals("C")) {
// grade += 3;
// }else if(data[i][j].equals("D")) {
// grade += 2;
// }else if(data[i][j].equals("E")) {
// grade += 1;
// }else {
// grade += 0;
// }
switch(data[i][j]) { //也可使用switch-case语句来实现情况的划分
case "A":
grade += 5;
break;
case "B":
grade += 4;
break;
case "C":
grade += 3;
break;
case "D":
grade += 2;
break;
case "E":
grade += 1;
break;
default:
grade += 0;
break;
}
}
if(i == str.length-1)
System.out.println(data[i][0]+" "+grade);
else
System.out.print(data[i][0]+" "+grade+",");
}
sc.close();//防 'sc' leak
}
}