首页 > 解决方案 > 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;
  }

}

标签: javaarraysparameters

解决方案


代码中有不少错误:

  1. 当你调用一个方法时,你不需要输入类型。所以你可以这样做:int maxGrade = maxGrade(Grades);
  2. 在 for 循环中,您从if-else. 所以它会在什么时候返回,i=0并且不会覆盖i.

  3. 您必须在方法中使用默认返回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;
    }
}

推荐阅读