我编写了这段代码,为学生的数量分配分数并以某种方式显示它们。我得到了“ .class”和“;”第22行的预期错误是int maxGrade = maxGrade(int[] Grades);
,我在其中尝试通过在maxGrade
上调用方法maxGrade()
来声明变量int[]Grades
。我认为这会编译,因为maxGrade()
是一种非空方法,并且会返回Grades的最大值。是因为我基本上说过int maxGrade = maxGrade
(因为maxGrade()
方法将返回maxGrade
),所以它会产生编译错误吗?还是我的语法有问题?
import java.util.*;
public class AssignGrades{
public static void main(String[] args){
Scanner scn = new Scanner(System.in);
int numStudents = scn.nextInt();
int[] Grades = new int[numStudents]; //each student has one grade
System.out.println("Enter the grades of " +numStudents + " students");
for(int i = 0; i < numStudents; i++){
Grades[i] = scn.nextInt();
}
}
public static int convertGrades(int[] Grades){
int maxGrade = maxGrade(int[] Grades);
for(int i = 0; i<Grades.length; i++)
if(Grades[i] >= maxGrade -5){
return 'A';
} else if(Grades[i] >= maxGrade -10){
return 'B';
} else if(Grades[i] >= maxGrade -15){
return 'C';
} else if(Grades[i] >= maxGrade -20){
return 'D';
} else {
return 'F';
}
}
public static int maxGrade(int[] Grades){
int maxGrade = 0;
for(int i = 0; i < Grades.length; i++){
if(Grades[i+1] > Grades[i]){
maxGrade = Grades[i+1];
} else if(Grades[i] > Grades[i+1]){
maxGrade = Grades[i];
} else {
maxGrade = Grades[i];
}
}
return maxGrade;
}
}
答案 0 :(得分:1)
代码中有很多错误:
int maxGrade = maxGrade(Grades);
在for循环中,您将从if-else
返回。因此它将在i=0
时返回,并且不会覆盖i
的其余值。
您将必须在方法convertGrades()
中使用默认返回值。
即使在此之后逻辑也不正确。您将不得不解决该问题。
使其生效的更新代码(查看所做更改的注释):
import java.util.*;
public class AssignGrades {
public static void main(String[] args) {
// Prompt the user for the number of students
System.out.println("Enter the number of students: ");
Scanner scn = new Scanner(System.in);
int numStudents = scn.nextInt();
// Variable names start with lower case letter
int[] grades = new int[numStudents]; // each student has one grade
System.out.println("Enter the grades of " + numStudents + " students");
for (int i = 0; i < numStudents; i++) {
grades[i] = scn.nextInt();
}
// Call the method here
convertGrades(grades);
scn.close();
}
public static void convertGrades(int[] grades) {
int maxGrade = maxGrade(grades);
// Use System.out.println to print the values
for (int i = 0; i < grades.length; i++) {
if (grades[i] >= maxGrade - 5) {
System.out.println("A");
} else if (grades[i] >= maxGrade - 10) {
System.out.println("B");
} else if (grades[i] >= maxGrade - 15) {
System.out.println("C");
} else if (grades[i] >= maxGrade - 20) {
System.out.println("D");
} else {
System.out.println("F");
}
}
}
public static int maxGrade(int[] grades) {
int maxGrade = 0;
// Shorten this
for (int i = 0; i < grades.length; i++) {
if(maxGrade < grades[i]) {
maxGrade = grades[i];
}
}
return maxGrade;
}
}