public class StudentDemo { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 判断类型并循环输入 String stuNo, name, str; double english, math, Java, testScore = 1.0; while (in.hasNext()) { String line = in.nextLine(); String[] fields = line.split(" "); //字符串 line 按照空格分隔符进行拆分,拆分后的结果存储在一个名为 fields 的字符串数组中 stuNo = fields[0]; //取 fields 数组的第一个元素,即该语句将 fields 数组的第一个元素的值赋给了变量 stuNo name = fields[1]; english = Double.parseDouble(fields[2]); math = Double.parseDouble(fields[3]); Java = Double.parseDouble(fields[4]); if (fields.length == 5) { // 学生PT Student s1 = new StudentPT(stuNo, name, english, math, Java, testScore); System.out.println(s1.toString()); } else if (fields[5].equals("SystemFramework")) { // 学生SJ Student s2 = new StudentSJ(stuNo, name, english, math, Java, testScore); System.out.println(s2.toString() + " task:SystemFramework"); double sum2 = StudentSJ.sum(); } else if (fields[5].equals("GroupLeader")) { // 学生ZZ Student s3 = new StudentZZ(stuNo, name, english, math, Java, testScore); System.out.println(s3.toString() + " duty:GroupLeader"); } else { break; } } //比较大小 double sum2; double sum3; double max = Math.max(sum2,sum3); if(max == sum2){ System.out.println("Lisi's total score is more than Wangwu"); } } } 有什么错误
时间: 2023-12-10 14:03:16 浏览: 82
该代码存在几个问题:
1. 变量 `sum2` 和 `sum3` 在使用前未进行初始化,应该先赋值为对应的值。
2. 在每个 `if-else if` 结构中,都有一行输出语句,但是这些输出语句的格式不一致,最后输出的结果可能会混乱。
3. 在第二个 `if-else if` 结构中,虽然定义了变量 `sum2`,但是没有对其进行计算,也没有输出它的值,需要添加相应的代码。
4. 在比较大小时,应该先判断 `sum2` 和 `sum3` 是否已经被赋值,否则比较的结果可能不正确。
下面是修改后的代码:
```java
public class StudentDemo {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String stuNo, name, str;
double english, math, Java, testScore = 1.0;
double sum2 = 0; // 初始化 sum2 和 sum3
double sum3 = 0;
while (in.hasNext()) {
String line = in.nextLine();
String[] fields = line.split(" ");
stuNo = fields[0];
name = fields[1];
english = Double.parseDouble(fields[2]);
math = Double.parseDouble(fields[3]);
Java = Double.parseDouble(fields[4]);
if (fields.length == 5) {
Student s1 = new StudentPT(stuNo, name, english, math, Java, testScore);
System.out.println(s1.toString()); // 输出格式和其他两个分支一致
} else if (fields[5].equals("SystemFramework")) {
Student s2 = new StudentSJ(stuNo, name, english, math, Java, testScore);
double sum = StudentSJ.sum(); // 计算 sum2 的值
System.out.println(s2.toString() + " task:SystemFramework sum:" + sum);
sum2 = sum;
} else if (fields[5].equals("GroupLeader")) {
Student s3 = new StudentZZ(stuNo, name, english, math, Java, testScore);
System.out.println(s3.toString() + " duty:GroupLeader");
sum3 = s3.totalScore(); // 计算 sum3 的值
} else {
break;
}
}
if (sum2 != 0 && sum3 != 0) { // 判断 sum2 和 sum3 是否已经被赋值
if (sum2 > sum3) {
System.out.println("Lisi's total score is more than Wangwu");
} else {
System.out.println("Wangwu's total score is more than Lisi");
}
}
}
}
```
阅读全文