java - Java - 在给出.class预期错误的方法中使用数组作为参数
问题描述
我编写了这段代码来为学生数量分配成绩并以某种方式显示它们。我有“.class”和“;” 第 22 行的预期错误,这是int maxGrade = maxGrade(int[] Grades);
我尝试maxGrade
通过调用maxGrade()
on方法来声明变量的地方int[]Grades
。我认为这会编译,因为maxGrade()
它是一个非 void 方法并返回 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;
}
}
解决方案
代码中有不少错误:
- 当你调用一个方法时,你不需要输入类型。所以你可以这样做:
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;
}
}
推荐阅读
- sql-server - 编辑 SQL 表中的记录时出现 MS-Access 错误 - [Microsoft][ODBC Driver 17 for SQL Server] COUNT 字段不正确或语法错误
- android - Admob、Adsense 地址(PIN)验证问题
- unity3d - 更改时网格变黑
- java - JUnit 测试抛出 NullPointerException
- ios - 未触发领域模式迁移块
- xss - JavaScript 上下文中的 XSS 编码
- javascript - 有没有办法在我自己的 css 声明中连接现有的 Tailwind 类?
- swiftui - 如何在 SwiftUI 中的视图和子视图之间共享变量
- csv - 使用 Trino(以前称为 PrestoDB)将非 varchar 数据导出到 CSV 表
- list - “我可以在一个 sml 函数中写 2 条指令吗?