Java - использование массива в качестве параметра в методе, дающем ожидаемую ошибку .class - PullRequest
0 голосов
/ 25 октября 2018

Я написал этот код, чтобы назначать оценки количеству учащихся и отображать их определенным образом.Я получил ".class" и ";"ожидаемые ошибки для строки 22, которая int maxGrade = maxGrade(int[] Grades);, где я пытался объявить переменную maxGrade, вызвав метод maxGrade() для int[]Grades.Я думал, что это скомпилируется, так как maxGrade() не является пустым методом и возвращает максимальное значение оценок.Дает ли это ошибки компиляции, потому что я в основном сказал, что 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 голосов
/ 25 октября 2018

В коде довольно много ошибок:

  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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...