Java-在给出.class预期错误的方法中使用数组作为参数

时间:2018-10-25 20:30:28

标签: java arrays parameters

我编写了这段代码,为学生的数量分配分数并以某种方式显示它们。我得到了“ .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;
  }

}

1 个答案:

答案 0 :(得分:1)

代码中有很多错误:

  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;
    }
}