Возникли проблемы при вызове метода из класса - PullRequest
4 голосов
/ 29 апреля 2019

Я пытаюсь завершить свой проект, вызывая методы, которые я создал в своем классе. Я получаю сообщение об ошибке "конструктор в классе не может быть применен к данным типам.

Вот мой главный

public static void main(String[] args) {
    double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
    HomeworkGrades cls = new HomeworkGrades();

а это мой класс

public class HomeworkGrades {
    private double[] grades;
    double [] HWgrades = { 1, 2, 3, 4, 5, 6, 7, 8};

    public HomeworkGrades(double [] gradesEarned)
    {
        grades= gradesEarned;  
        for (int i =0; i<gradesEarned.length;i++)
            HWgrades =gradesEarned;
    }
     public double calcAverage()
    {
        int sum =0;
        for(int i =0; i<HWgrades.length; i++)
        {
            sum = (int) (sum + HWgrades[i]);
        }
        double average = sum / (double)HWgrades.length;
        return average;
    }
     public static  double calcLowestGrade(double[]a, double total)
     {
         double temp;
         double size;
         double  array[] = { 1, 2, 3, 4, 5, 6, 7, 8};
         size = array.length;
         for (int i =0; i <size; i++)
         {
             for(int j=i+1;j<size;j++)
             {
                 if(array[i]>array[j])
                 {
                     temp=array[i];
                     array[i] = array[j];
                     array[j] = temp;
                 }
             }
         }
         System.out.println("Lowest grade is " + array[0]);
         return array[0];
     }    
}

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Конструктор, которым вы поделились, принимает double[].Кажется, вы забыли передать созданный вами массив grades:

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades(grades);
1 голос
/ 29 апреля 2019

Вы забыли установить параметр для своего new HomeworkGrades() -экземпляра.

Поэтому

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades();

должно быть

double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90 };
HomeworkGrades cls = new HomeworkGrades(grades);

Кроме того ... Выделать какие-то безумные вещи при инициализации HomeworkGrades ...

Это будет работать просто отлично:

    double[] HWgrades;

    public HomeworkGrades(double [] gradesEarned) {
        HWgrades =gradesEarned;
    }

Вы даже не используете private double[] grades; и вам не нужно устанавливать свой массиввремена array.length для того, чтобы получить массив в конце.Просто сделайте это один раз.

РЕДАКТИРОВАТЬ Для того, чтобы напечатать ваше среднее значение или все, что вы хотите от экземпляра, просто получите двойное значение и напечатайте его в System.out.println ()

    public static void main(String[] args) {
        double[] grades = {98.7, 77.9, 90, 83, 67, 33, 81, 90};
        HomeworkGrades cls = new HomeworkGrades(grades);
        System.out.println("Average: " + cls.calcAverage());
    }

РЕДАКТИРОВАТЬ2 Ваша функция, чтобы получить самый низкий балл, странная ... Просто используйте это istead:

    public double calcLowestGrade() {
        double lowest = Double.MAX_VALUE;
        for (double d : HWgrades) {
            if (d < lowest) {
                lowest = d;
            }
        }
        return lowest;
    }

Одна ошибка состояла в том, что вы сделали функцию статической и, следовательно, ееНе удалось получить массив HWgrades.Более того, вам не нужно создавать новый массив, потому что вы уже дали объекту массив в начале.

...